{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基于相关性的简单因子分析 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.stats.mstats import winsorize\n",
    "from scipy.stats import pearsonr,spearmanr,kendalltau\n",
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from gm.api import *\n",
    "set_token(\"eea4b28a3ceb7048603d388bb777ebc67de47385\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 获取沪深300所有股票的财务因子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SZSE.002466</td>\n",
       "      <td>0.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>SHSE.601901</td>\n",
       "      <td>0.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SZSE.002475</td>\n",
       "      <td>0.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SHSE.601799</td>\n",
       "      <td>0.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SHSE.601857</td>\n",
       "      <td>0.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>SZSE.300782</td>\n",
       "      <td>0.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>SZSE.002460</td>\n",
       "      <td>0.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>SHSE.601838</td>\n",
       "      <td>0.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>SZSE.002459</td>\n",
       "      <td>0.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>SHSE.601788</td>\n",
       "      <td>0.13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          symbol  weight\n",
       "0    SZSE.002466    0.44\n",
       "1    SHSE.601901    0.15\n",
       "2    SZSE.002475    0.82\n",
       "3    SHSE.601799    0.10\n",
       "4    SHSE.601857    0.28\n",
       "..           ...     ...\n",
       "295  SZSE.300782    0.26\n",
       "296  SZSE.002460    0.53\n",
       "297  SHSE.601838    0.17\n",
       "298  SZSE.002459    0.26\n",
       "299  SHSE.601788    0.13\n",
       "\n",
       "[300 rows x 2 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hs300=get_constituents(index='SHSE.000300', fields='symbol, weight', df=True)\n",
    "hs300"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#hs300.symbol.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th>pub_date</th>\n",
       "      <th>end_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SHSE.601012</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>12.36</td>\n",
       "      <td>2.0037e+10</td>\n",
       "      <td>2.1894e+10</td>\n",
       "      <td>1.6311</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>62.4308</td>\n",
       "      <td>66.8032</td>\n",
       "      <td>81.4258</td>\n",
       "      <td>79.4376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>SHSE.601238</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>20.35</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>0.0594</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>36.2214</td>\n",
       "      <td>36.3529</td>\n",
       "      <td>47.1458</td>\n",
       "      <td>44.8516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SZSE.300316</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>13.31</td>\n",
       "      <td>1.0792e+10</td>\n",
       "      <td>1.1759e+10</td>\n",
       "      <td>1.2983</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>134.5585</td>\n",
       "      <td>122.7254</td>\n",
       "      <td>193.1035</td>\n",
       "      <td>128.6337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SZSE.300347</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>27.80</td>\n",
       "      <td>8.1442e+09</td>\n",
       "      <td>1.2046e+10</td>\n",
       "      <td>1.2533</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>79.6783</td>\n",
       "      <td>81.7557</td>\n",
       "      <td>90.6420</td>\n",
       "      <td>87.2153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SHSE.603993</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>4.02</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>0.5201</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>67.8822</td>\n",
       "      <td>79.4405</td>\n",
       "      <td>50.0207</td>\n",
       "      <td>79.3375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22564</th>\n",
       "      <td>SZSE.002304</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>70.03</td>\n",
       "      <td>8.6399e+10</td>\n",
       "      <td>1.0553e+11</td>\n",
       "      <td>0.5170</td>\n",
       "      <td>19.6702</td>\n",
       "      <td>18.8654</td>\n",
       "      <td>10.7425</td>\n",
       "      <td>21.4678</td>\n",
       "      <td>10.9162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22565</th>\n",
       "      <td>SZSE.002311</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.74</td>\n",
       "      <td>2.5560e+10</td>\n",
       "      <td>2.5789e+10</td>\n",
       "      <td>0.8867</td>\n",
       "      <td>33.0636</td>\n",
       "      <td>31.9707</td>\n",
       "      <td>164.4282</td>\n",
       "      <td>35.3513</td>\n",
       "      <td>176.4772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22566</th>\n",
       "      <td>SHSE.601989</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>6.16</td>\n",
       "      <td>1.1062e+11</td>\n",
       "      <td>1.1311e+11</td>\n",
       "      <td>0.5885</td>\n",
       "      <td>-43.1465</td>\n",
       "      <td>-40.4598</td>\n",
       "      <td>133.8134</td>\n",
       "      <td>-33.9623</td>\n",
       "      <td>2289.9270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22567</th>\n",
       "      <td>SHSE.600999</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.35</td>\n",
       "      <td>7.8531e+10</td>\n",
       "      <td>9.4963e+10</td>\n",
       "      <td>0.5441</td>\n",
       "      <td>8.7052</td>\n",
       "      <td>10.2610</td>\n",
       "      <td>23.5301</td>\n",
       "      <td>8.7416</td>\n",
       "      <td>23.8195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22568</th>\n",
       "      <td>SZSE.300033</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>79.90</td>\n",
       "      <td>2.1063e+10</td>\n",
       "      <td>4.2954e+10</td>\n",
       "      <td>7.0221</td>\n",
       "      <td>44.8738</td>\n",
       "      <td>41.5734</td>\n",
       "      <td>74.7478</td>\n",
       "      <td>45.8465</td>\n",
       "      <td>75.4029</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22569 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            symbol                  pub_date                  end_date  \\\n",
       "0      SHSE.601012 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "1      SHSE.601238 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "2      SZSE.300316 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "3      SZSE.300347 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "4      SHSE.603993 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "...            ...                       ...                       ...   \n",
       "22564  SZSE.002304 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22565  SZSE.002311 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22566  SHSE.601989 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22567  SHSE.600999 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22568  SZSE.300033 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "\n",
       "       TCLOSE  NEGOTIABLEMV   TOTMKTCAP  TURNRATE     PELFY     PETTM  \\\n",
       "0       12.36    2.0037e+10  2.1894e+10    1.6311   74.5834   62.4308   \n",
       "1       20.35    8.5912e+10  8.5912e+10    0.0594   41.1039   36.2214   \n",
       "2       13.31    1.0792e+10  1.1759e+10    1.2983  178.6724  134.5585   \n",
       "3       27.80    8.1442e+09  1.2046e+10    1.2533   95.9883   79.6783   \n",
       "4        4.02    5.2074e+10  5.2074e+10    0.5201   37.2133   67.8822   \n",
       "...       ...           ...         ...       ...       ...       ...   \n",
       "22564   70.03    8.6399e+10  1.0553e+11    0.5170   19.6702   18.8654   \n",
       "22565   16.74    2.5560e+10  2.5789e+10    0.8867   33.0636   31.9707   \n",
       "22566    6.16    1.1062e+11  1.1311e+11    0.5885  -43.1465  -40.4598   \n",
       "22567   16.35    7.8531e+10  9.4963e+10    0.5441    8.7052   10.2610   \n",
       "22568   79.90    2.1063e+10  4.2954e+10    7.0221   44.8738   41.5734   \n",
       "\n",
       "          PEMRQ  PELFYNPAAEI  PETTMNPAAEI  \n",
       "0       66.8032      81.4258      79.4376  \n",
       "1       36.3529      47.1458      44.8516  \n",
       "2      122.7254     193.1035     128.6337  \n",
       "3       81.7557      90.6420      87.2153  \n",
       "4       79.4405      50.0207      79.3375  \n",
       "...         ...          ...          ...  \n",
       "22564   10.7425      21.4678      10.9162  \n",
       "22565  164.4282      35.3513     176.4772  \n",
       "22566  133.8134     -33.9623    2289.9270  \n",
       "22567   23.5301       8.7416      23.8195  \n",
       "22568   74.7478      45.8465      75.4029  \n",
       "\n",
       "[22569 rows x 12 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#注意最高40000条记录的限制\n",
    "ex2=get_fundamentals(table='trading_derivative_indicator', symbols=hs300.symbol.tolist(), start_date='2016-01-01', end_date='2016-06-01',\n",
    "                 fields='TCLOSE,NEGOTIABLEMV,TOTMKTCAP,TURNRATE,PELFY,PETTM,PEMRQ,PELFYNPAAEI,PETTMNPAAEI', df=True,limit=40000)\n",
    "ex2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## classwork1\n",
    "\n",
    "* 基于上面数据选择2016-01-04这天的PELFY并作图\n",
    "\n",
    "* 获取中证军工指数代码以及此指数的所有股票，获取其2021-01-01到2021-01-15的市盈率与市值数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ex2[ex2.end_date==\"2016-01-04\"].PELFY.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SHSE.603712</td>\n",
       "      <td>1.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>SZSE.002268</td>\n",
       "      <td>2.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SZSE.000768</td>\n",
       "      <td>4.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SZSE.300722</td>\n",
       "      <td>0.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SHSE.603678</td>\n",
       "      <td>1.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>SZSE.300581</td>\n",
       "      <td>0.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>SZSE.300123</td>\n",
       "      <td>0.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>SZSE.000738</td>\n",
       "      <td>1.59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>SZSE.300629</td>\n",
       "      <td>0.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>SHSE.600118</td>\n",
       "      <td>1.36</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>64 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         symbol  weight\n",
       "0   SHSE.603712    1.12\n",
       "1   SZSE.002268    2.81\n",
       "2   SZSE.000768    4.16\n",
       "3   SZSE.300722    0.22\n",
       "4   SHSE.603678    1.49\n",
       "..          ...     ...\n",
       "59  SZSE.300581    0.28\n",
       "60  SZSE.300123    0.49\n",
       "61  SZSE.000738    1.59\n",
       "62  SZSE.300629    0.20\n",
       "63  SHSE.600118    1.36\n",
       "\n",
       "[64 rows x 2 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zzjg=get_constituents(index='SZSE.399967', fields='symbol, weight', df=True)\n",
    "zzjg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th>pub_date</th>\n",
       "      <th>end_date</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>PELFY</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SHSE.600038</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>3.9295e+10</td>\n",
       "      <td>66.8029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>SHSE.600118</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>3.9613e+10</td>\n",
       "      <td>118.0295</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SHSE.600184</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>6.3188e+09</td>\n",
       "      <td>102.0016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SHSE.600316</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>4.2776e+10</td>\n",
       "      <td>516.1919</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SHSE.600372</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>2021-01-04 00:00:00+08:00</td>\n",
       "      <td>4.0396e+10</td>\n",
       "      <td>72.6522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>635</th>\n",
       "      <td>SZSE.002985</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2.6428e+10</td>\n",
       "      <td>124.4868</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>636</th>\n",
       "      <td>SZSE.300875</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>7.0652e+09</td>\n",
       "      <td>74.2682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>637</th>\n",
       "      <td>SZSE.003009</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>9.5100e+09</td>\n",
       "      <td>96.1116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>638</th>\n",
       "      <td>SZSE.300900</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>8.9058e+09</td>\n",
       "      <td>119.3027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>639</th>\n",
       "      <td>SZSE.300922</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>2021-01-15 00:00:00+08:00</td>\n",
       "      <td>5.3204e+09</td>\n",
       "      <td>101.4067</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>640 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          symbol                  pub_date                  end_date  \\\n",
       "0    SHSE.600038 2021-01-04 00:00:00+08:00 2021-01-04 00:00:00+08:00   \n",
       "1    SHSE.600118 2021-01-04 00:00:00+08:00 2021-01-04 00:00:00+08:00   \n",
       "2    SHSE.600184 2021-01-04 00:00:00+08:00 2021-01-04 00:00:00+08:00   \n",
       "3    SHSE.600316 2021-01-04 00:00:00+08:00 2021-01-04 00:00:00+08:00   \n",
       "4    SHSE.600372 2021-01-04 00:00:00+08:00 2021-01-04 00:00:00+08:00   \n",
       "..           ...                       ...                       ...   \n",
       "635  SZSE.002985 2021-01-15 00:00:00+08:00 2021-01-15 00:00:00+08:00   \n",
       "636  SZSE.300875 2021-01-15 00:00:00+08:00 2021-01-15 00:00:00+08:00   \n",
       "637  SZSE.003009 2021-01-15 00:00:00+08:00 2021-01-15 00:00:00+08:00   \n",
       "638  SZSE.300900 2021-01-15 00:00:00+08:00 2021-01-15 00:00:00+08:00   \n",
       "639  SZSE.300922 2021-01-15 00:00:00+08:00 2021-01-15 00:00:00+08:00   \n",
       "\n",
       "      TOTMKTCAP     PELFY  \n",
       "0    3.9295e+10   66.8029  \n",
       "1    3.9613e+10  118.0295  \n",
       "2    6.3188e+09  102.0016  \n",
       "3    4.2776e+10  516.1919  \n",
       "4    4.0396e+10   72.6522  \n",
       "..          ...       ...  \n",
       "635  2.6428e+10  124.4868  \n",
       "636  7.0652e+09   74.2682  \n",
       "637  9.5100e+09   96.1116  \n",
       "638  8.9058e+09  119.3027  \n",
       "639  5.3204e+09  101.4067  \n",
       "\n",
       "[640 rows x 5 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zzjg_ex=get_fundamentals(table='trading_derivative_indicator', symbols=zzjg.symbol.tolist(), start_date='2021-01-01', end_date='2021-01-15',\n",
    "                 fields='TOTMKTCAP,PELFY', df=True,limit=40000)\n",
    "zzjg_ex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 获取单因子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th>pub_date</th>\n",
       "      <th>end_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>SHSE.601012</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>12.36</td>\n",
       "      <td>2.0037e+10</td>\n",
       "      <td>2.1894e+10</td>\n",
       "      <td>1.6311</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>62.4308</td>\n",
       "      <td>66.8032</td>\n",
       "      <td>81.4258</td>\n",
       "      <td>79.4376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>SHSE.601238</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>20.35</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>0.0594</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>36.2214</td>\n",
       "      <td>36.3529</td>\n",
       "      <td>47.1458</td>\n",
       "      <td>44.8516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SZSE.300316</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>13.31</td>\n",
       "      <td>1.0792e+10</td>\n",
       "      <td>1.1759e+10</td>\n",
       "      <td>1.2983</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>134.5585</td>\n",
       "      <td>122.7254</td>\n",
       "      <td>193.1035</td>\n",
       "      <td>128.6337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SZSE.300347</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>27.80</td>\n",
       "      <td>8.1442e+09</td>\n",
       "      <td>1.2046e+10</td>\n",
       "      <td>1.2533</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>79.6783</td>\n",
       "      <td>81.7557</td>\n",
       "      <td>90.6420</td>\n",
       "      <td>87.2153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SHSE.603993</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>4.02</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>0.5201</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>67.8822</td>\n",
       "      <td>79.4405</td>\n",
       "      <td>50.0207</td>\n",
       "      <td>79.3375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22564</th>\n",
       "      <td>SZSE.002304</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>70.03</td>\n",
       "      <td>8.6399e+10</td>\n",
       "      <td>1.0553e+11</td>\n",
       "      <td>0.5170</td>\n",
       "      <td>19.6702</td>\n",
       "      <td>18.8654</td>\n",
       "      <td>10.7425</td>\n",
       "      <td>21.4678</td>\n",
       "      <td>10.9162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22565</th>\n",
       "      <td>SZSE.002311</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.74</td>\n",
       "      <td>2.5560e+10</td>\n",
       "      <td>2.5789e+10</td>\n",
       "      <td>0.8867</td>\n",
       "      <td>33.0636</td>\n",
       "      <td>31.9707</td>\n",
       "      <td>164.4282</td>\n",
       "      <td>35.3513</td>\n",
       "      <td>176.4772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22566</th>\n",
       "      <td>SHSE.601989</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>6.16</td>\n",
       "      <td>1.1062e+11</td>\n",
       "      <td>1.1311e+11</td>\n",
       "      <td>0.5885</td>\n",
       "      <td>-43.1465</td>\n",
       "      <td>-40.4598</td>\n",
       "      <td>133.8134</td>\n",
       "      <td>-33.9623</td>\n",
       "      <td>2289.9270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22567</th>\n",
       "      <td>SHSE.600999</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.35</td>\n",
       "      <td>7.8531e+10</td>\n",
       "      <td>9.4963e+10</td>\n",
       "      <td>0.5441</td>\n",
       "      <td>8.7052</td>\n",
       "      <td>10.2610</td>\n",
       "      <td>23.5301</td>\n",
       "      <td>8.7416</td>\n",
       "      <td>23.8195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22568</th>\n",
       "      <td>SZSE.300033</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>79.90</td>\n",
       "      <td>2.1063e+10</td>\n",
       "      <td>4.2954e+10</td>\n",
       "      <td>7.0221</td>\n",
       "      <td>44.8738</td>\n",
       "      <td>41.5734</td>\n",
       "      <td>74.7478</td>\n",
       "      <td>45.8465</td>\n",
       "      <td>75.4029</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22569 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            symbol                  pub_date                  end_date  \\\n",
       "0      SHSE.601012 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "1      SHSE.601238 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "2      SZSE.300316 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "3      SZSE.300347 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "4      SHSE.603993 2016-01-04 00:00:00+08:00 2016-01-04 00:00:00+08:00   \n",
       "...            ...                       ...                       ...   \n",
       "22564  SZSE.002304 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22565  SZSE.002311 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22566  SHSE.601989 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22567  SHSE.600999 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "22568  SZSE.300033 2016-06-01 00:00:00+08:00 2016-06-01 00:00:00+08:00   \n",
       "\n",
       "       TCLOSE  NEGOTIABLEMV   TOTMKTCAP  TURNRATE     PELFY     PETTM  \\\n",
       "0       12.36    2.0037e+10  2.1894e+10    1.6311   74.5834   62.4308   \n",
       "1       20.35    8.5912e+10  8.5912e+10    0.0594   41.1039   36.2214   \n",
       "2       13.31    1.0792e+10  1.1759e+10    1.2983  178.6724  134.5585   \n",
       "3       27.80    8.1442e+09  1.2046e+10    1.2533   95.9883   79.6783   \n",
       "4        4.02    5.2074e+10  5.2074e+10    0.5201   37.2133   67.8822   \n",
       "...       ...           ...         ...       ...       ...       ...   \n",
       "22564   70.03    8.6399e+10  1.0553e+11    0.5170   19.6702   18.8654   \n",
       "22565   16.74    2.5560e+10  2.5789e+10    0.8867   33.0636   31.9707   \n",
       "22566    6.16    1.1062e+11  1.1311e+11    0.5885  -43.1465  -40.4598   \n",
       "22567   16.35    7.8531e+10  9.4963e+10    0.5441    8.7052   10.2610   \n",
       "22568   79.90    2.1063e+10  4.2954e+10    7.0221   44.8738   41.5734   \n",
       "\n",
       "          PEMRQ  PELFYNPAAEI  PETTMNPAAEI  \n",
       "0       66.8032      81.4258      79.4376  \n",
       "1       36.3529      47.1458      44.8516  \n",
       "2      122.7254     193.1035     128.6337  \n",
       "3       81.7557      90.6420      87.2153  \n",
       "4       79.4405      50.0207      79.3375  \n",
       "...         ...          ...          ...  \n",
       "22564   10.7425      21.4678      10.9162  \n",
       "22565  164.4282      35.3513     176.4772  \n",
       "22566  133.8134     -33.9623    2289.9270  \n",
       "22567   23.5301       8.7416      23.8195  \n",
       "22568   74.7478      45.8465      75.4029  \n",
       "\n",
       "[22569 rows x 12 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>pub_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>end_date</th>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-01-04 00:00:00+08:00</th>\n",
       "      <th>SHSE.601012</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>12.36</td>\n",
       "      <td>2.0037e+10</td>\n",
       "      <td>2.1894e+10</td>\n",
       "      <td>1.6311</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>62.4308</td>\n",
       "      <td>66.8032</td>\n",
       "      <td>81.4258</td>\n",
       "      <td>79.4376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601238</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>20.35</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>0.0594</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>36.2214</td>\n",
       "      <td>36.3529</td>\n",
       "      <td>47.1458</td>\n",
       "      <td>44.8516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300316</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>13.31</td>\n",
       "      <td>1.0792e+10</td>\n",
       "      <td>1.1759e+10</td>\n",
       "      <td>1.2983</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>134.5585</td>\n",
       "      <td>122.7254</td>\n",
       "      <td>193.1035</td>\n",
       "      <td>128.6337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>27.80</td>\n",
       "      <td>8.1442e+09</td>\n",
       "      <td>1.2046e+10</td>\n",
       "      <td>1.2533</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>79.6783</td>\n",
       "      <td>81.7557</td>\n",
       "      <td>90.6420</td>\n",
       "      <td>87.2153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.603993</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>4.02</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>0.5201</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>67.8822</td>\n",
       "      <td>79.4405</td>\n",
       "      <td>50.0207</td>\n",
       "      <td>79.3375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-06-01 00:00:00+08:00</th>\n",
       "      <th>SZSE.002304</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>70.03</td>\n",
       "      <td>8.6399e+10</td>\n",
       "      <td>1.0553e+11</td>\n",
       "      <td>0.5170</td>\n",
       "      <td>19.6702</td>\n",
       "      <td>18.8654</td>\n",
       "      <td>10.7425</td>\n",
       "      <td>21.4678</td>\n",
       "      <td>10.9162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.002311</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.74</td>\n",
       "      <td>2.5560e+10</td>\n",
       "      <td>2.5789e+10</td>\n",
       "      <td>0.8867</td>\n",
       "      <td>33.0636</td>\n",
       "      <td>31.9707</td>\n",
       "      <td>164.4282</td>\n",
       "      <td>35.3513</td>\n",
       "      <td>176.4772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601989</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>6.16</td>\n",
       "      <td>1.1062e+11</td>\n",
       "      <td>1.1311e+11</td>\n",
       "      <td>0.5885</td>\n",
       "      <td>-43.1465</td>\n",
       "      <td>-40.4598</td>\n",
       "      <td>133.8134</td>\n",
       "      <td>-33.9623</td>\n",
       "      <td>2289.9270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600999</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.35</td>\n",
       "      <td>7.8531e+10</td>\n",
       "      <td>9.4963e+10</td>\n",
       "      <td>0.5441</td>\n",
       "      <td>8.7052</td>\n",
       "      <td>10.2610</td>\n",
       "      <td>23.5301</td>\n",
       "      <td>8.7416</td>\n",
       "      <td>23.8195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300033</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>79.90</td>\n",
       "      <td>2.1063e+10</td>\n",
       "      <td>4.2954e+10</td>\n",
       "      <td>7.0221</td>\n",
       "      <td>44.8738</td>\n",
       "      <td>41.5734</td>\n",
       "      <td>74.7478</td>\n",
       "      <td>45.8465</td>\n",
       "      <td>75.4029</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22569 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                       pub_date  TCLOSE  \\\n",
       "end_date                  symbol                                          \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012 2016-01-04 00:00:00+08:00   12.36   \n",
       "                          SHSE.601238 2016-01-04 00:00:00+08:00   20.35   \n",
       "                          SZSE.300316 2016-01-04 00:00:00+08:00   13.31   \n",
       "                          SZSE.300347 2016-01-04 00:00:00+08:00   27.80   \n",
       "                          SHSE.603993 2016-01-04 00:00:00+08:00    4.02   \n",
       "...                                                         ...     ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304 2016-06-01 00:00:00+08:00   70.03   \n",
       "                          SZSE.002311 2016-06-01 00:00:00+08:00   16.74   \n",
       "                          SHSE.601989 2016-06-01 00:00:00+08:00    6.16   \n",
       "                          SHSE.600999 2016-06-01 00:00:00+08:00   16.35   \n",
       "                          SZSE.300033 2016-06-01 00:00:00+08:00   79.90   \n",
       "\n",
       "                                       NEGOTIABLEMV   TOTMKTCAP  TURNRATE  \\\n",
       "end_date                  symbol                                            \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012    2.0037e+10  2.1894e+10    1.6311   \n",
       "                          SHSE.601238    8.5912e+10  8.5912e+10    0.0594   \n",
       "                          SZSE.300316    1.0792e+10  1.1759e+10    1.2983   \n",
       "                          SZSE.300347    8.1442e+09  1.2046e+10    1.2533   \n",
       "                          SHSE.603993    5.2074e+10  5.2074e+10    0.5201   \n",
       "...                                             ...         ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304    8.6399e+10  1.0553e+11    0.5170   \n",
       "                          SZSE.002311    2.5560e+10  2.5789e+10    0.8867   \n",
       "                          SHSE.601989    1.1062e+11  1.1311e+11    0.5885   \n",
       "                          SHSE.600999    7.8531e+10  9.4963e+10    0.5441   \n",
       "                          SZSE.300033    2.1063e+10  4.2954e+10    7.0221   \n",
       "\n",
       "                                          PELFY     PETTM     PEMRQ  \\\n",
       "end_date                  symbol                                      \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012   74.5834   62.4308   66.8032   \n",
       "                          SHSE.601238   41.1039   36.2214   36.3529   \n",
       "                          SZSE.300316  178.6724  134.5585  122.7254   \n",
       "                          SZSE.300347   95.9883   79.6783   81.7557   \n",
       "                          SHSE.603993   37.2133   67.8822   79.4405   \n",
       "...                                         ...       ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304   19.6702   18.8654   10.7425   \n",
       "                          SZSE.002311   33.0636   31.9707  164.4282   \n",
       "                          SHSE.601989  -43.1465  -40.4598  133.8134   \n",
       "                          SHSE.600999    8.7052   10.2610   23.5301   \n",
       "                          SZSE.300033   44.8738   41.5734   74.7478   \n",
       "\n",
       "                                       PELFYNPAAEI  PETTMNPAAEI  \n",
       "end_date                  symbol                                 \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012      81.4258      79.4376  \n",
       "                          SHSE.601238      47.1458      44.8516  \n",
       "                          SZSE.300316     193.1035     128.6337  \n",
       "                          SZSE.300347      90.6420      87.2153  \n",
       "                          SHSE.603993      50.0207      79.3375  \n",
       "...                                            ...          ...  \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304      21.4678      10.9162  \n",
       "                          SZSE.002311      35.3513     176.4772  \n",
       "                          SHSE.601989     -33.9623    2289.9270  \n",
       "                          SHSE.600999       8.7416      23.8195  \n",
       "                          SZSE.300033      45.8465      75.4029  \n",
       "\n",
       "[22569 rows x 10 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3=ex2.set_index([\"end_date\",\"symbol\"])\n",
    "ex3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.601012     74.5834\n",
       "SHSE.601238     41.1039\n",
       "SZSE.300316    178.6724\n",
       "SZSE.300347     95.9883\n",
       "SHSE.603993     37.2133\n",
       "                 ...   \n",
       "SHSE.601169      8.1275\n",
       "SHSE.601186     14.7488\n",
       "SHSE.601318     15.8467\n",
       "SHSE.601328      6.8455\n",
       "SHSE.601390     21.8300\n",
       "Name: PELFY, Length: 223, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='symbol'>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.603019    212.4834\n",
       "SZSE.300408     46.6776\n",
       "SZSE.002736     29.7543\n",
       "SHSE.601021     50.6955\n",
       "SZSE.300413     92.7357\n",
       "                 ...   \n",
       "SHSE.601288      5.6467\n",
       "SZSE.002456     42.2197\n",
       "SZSE.002460    249.7126\n",
       "SZSE.002463   -804.6454\n",
       "SHSE.601818      6.5615\n",
       "Name: PELFY, Length: 250, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor=ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY\n",
    "factor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 收益率的计算\n",
    "\n",
    "* history\n",
    "* set_index([\"eob\",\"symbol\"])\n",
    "* unstack()."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## classwork2\n",
    "\n",
    "* 获得沪深300所有股票2016-01-01到2016-06-01的收盘价，股票代码，交易时间\n",
    "\n",
    "* 计算此系列股票的收益率(history_data_p)\n",
    "\n",
    "* 获得2016-01-05所有股票的收益率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "history_data=history(symbol=hs300.symbol.tolist(), frequency='1d', start_time='2016-01-01',  end_time='2016-06-01', fields='symbol,close,eob', adjust=ADJUST_PREV, df= True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>symbol</th>\n",
       "      <th>SHSE.600000</th>\n",
       "      <th>SHSE.600009</th>\n",
       "      <th>SHSE.600010</th>\n",
       "      <th>SHSE.600011</th>\n",
       "      <th>SHSE.600015</th>\n",
       "      <th>SHSE.600016</th>\n",
       "      <th>SHSE.600018</th>\n",
       "      <th>SHSE.600019</th>\n",
       "      <th>SHSE.600028</th>\n",
       "      <th>SHSE.600029</th>\n",
       "      <th>...</th>\n",
       "      <th>SZSE.300142</th>\n",
       "      <th>SZSE.300144</th>\n",
       "      <th>SZSE.300274</th>\n",
       "      <th>SZSE.300316</th>\n",
       "      <th>SZSE.300347</th>\n",
       "      <th>SZSE.300408</th>\n",
       "      <th>SZSE.300413</th>\n",
       "      <th>SZSE.300433</th>\n",
       "      <th>SZSE.300450</th>\n",
       "      <th>SZSE.300498</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>eob</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-01-04 00:00:00+08:00</th>\n",
       "      <td>10.3391</td>\n",
       "      <td>26.7667</td>\n",
       "      <td>2.3108</td>\n",
       "      <td>6.7075</td>\n",
       "      <td>7.9038</td>\n",
       "      <td>5.8563</td>\n",
       "      <td>5.0912</td>\n",
       "      <td>3.8244</td>\n",
       "      <td>3.3581</td>\n",
       "      <td>7.4287</td>\n",
       "      <td>...</td>\n",
       "      <td>11.8869</td>\n",
       "      <td>14.0882</td>\n",
       "      <td>13.3290</td>\n",
       "      <td>9.9046</td>\n",
       "      <td>18.1614</td>\n",
       "      <td>16.5358</td>\n",
       "      <td>20.7707</td>\n",
       "      <td>13.2373</td>\n",
       "      <td>9.6104</td>\n",
       "      <td>21.5780</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-05 00:00:00+08:00</th>\n",
       "      <td>10.4320</td>\n",
       "      <td>27.2306</td>\n",
       "      <td>2.3675</td>\n",
       "      <td>6.6912</td>\n",
       "      <td>7.9453</td>\n",
       "      <td>5.9146</td>\n",
       "      <td>5.1338</td>\n",
       "      <td>3.9706</td>\n",
       "      <td>3.3300</td>\n",
       "      <td>7.2181</td>\n",
       "      <td>...</td>\n",
       "      <td>11.2586</td>\n",
       "      <td>13.4559</td>\n",
       "      <td>12.9186</td>\n",
       "      <td>9.4135</td>\n",
       "      <td>18.3705</td>\n",
       "      <td>16.4272</td>\n",
       "      <td>19.3836</td>\n",
       "      <td>13.2355</td>\n",
       "      <td>9.9645</td>\n",
       "      <td>22.0834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-06 00:00:00+08:00</th>\n",
       "      <td>10.5133</td>\n",
       "      <td>27.9313</td>\n",
       "      <td>2.5659</td>\n",
       "      <td>6.8377</td>\n",
       "      <td>7.9591</td>\n",
       "      <td>5.9341</td>\n",
       "      <td>5.2190</td>\n",
       "      <td>4.3655</td>\n",
       "      <td>3.4424</td>\n",
       "      <td>7.4957</td>\n",
       "      <td>...</td>\n",
       "      <td>11.5179</td>\n",
       "      <td>13.8558</td>\n",
       "      <td>13.0698</td>\n",
       "      <td>9.7483</td>\n",
       "      <td>18.6906</td>\n",
       "      <td>16.6538</td>\n",
       "      <td>20.1996</td>\n",
       "      <td>13.6862</td>\n",
       "      <td>9.9706</td>\n",
       "      <td>23.9772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-07 00:00:00+08:00</th>\n",
       "      <td>10.1706</td>\n",
       "      <td>26.5016</td>\n",
       "      <td>2.3179</td>\n",
       "      <td>6.3412</td>\n",
       "      <td>7.4198</td>\n",
       "      <td>5.5774</td>\n",
       "      <td>4.8188</td>\n",
       "      <td>3.9341</td>\n",
       "      <td>3.2668</td>\n",
       "      <td>7.0362</td>\n",
       "      <td>...</td>\n",
       "      <td>10.6204</td>\n",
       "      <td>12.4778</td>\n",
       "      <td>11.7628</td>\n",
       "      <td>8.8777</td>\n",
       "      <td>17.1227</td>\n",
       "      <td>15.1055</td>\n",
       "      <td>18.1773</td>\n",
       "      <td>12.3343</td>\n",
       "      <td>8.9731</td>\n",
       "      <td>21.6271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-08 00:00:00+08:00</th>\n",
       "      <td>10.1590</td>\n",
       "      <td>26.5394</td>\n",
       "      <td>2.5163</td>\n",
       "      <td>6.4958</td>\n",
       "      <td>7.4889</td>\n",
       "      <td>5.6423</td>\n",
       "      <td>4.9635</td>\n",
       "      <td>4.3289</td>\n",
       "      <td>3.3511</td>\n",
       "      <td>7.3808</td>\n",
       "      <td>...</td>\n",
       "      <td>10.5207</td>\n",
       "      <td>13.1911</td>\n",
       "      <td>11.8978</td>\n",
       "      <td>8.7884</td>\n",
       "      <td>17.1292</td>\n",
       "      <td>15.3793</td>\n",
       "      <td>17.9208</td>\n",
       "      <td>12.5156</td>\n",
       "      <td>9.0817</td>\n",
       "      <td>23.7908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-26 00:00:00+08:00</th>\n",
       "      <td>10.2810</td>\n",
       "      <td>25.5737</td>\n",
       "      <td>2.0343</td>\n",
       "      <td>5.9423</td>\n",
       "      <td>6.8666</td>\n",
       "      <td>5.8252</td>\n",
       "      <td>4.3165</td>\n",
       "      <td>3.7805</td>\n",
       "      <td>3.3370</td>\n",
       "      <td>6.4044</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.4507</td>\n",
       "      <td>11.2065</td>\n",
       "      <td>6.1453</td>\n",
       "      <td>19.1064</td>\n",
       "      <td>16.3832</td>\n",
       "      <td>14.4882</td>\n",
       "      <td>13.6122</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.4701</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-27 00:00:00+08:00</th>\n",
       "      <td>10.3042</td>\n",
       "      <td>25.5263</td>\n",
       "      <td>2.0202</td>\n",
       "      <td>5.9179</td>\n",
       "      <td>6.8597</td>\n",
       "      <td>5.8317</td>\n",
       "      <td>4.3165</td>\n",
       "      <td>3.8098</td>\n",
       "      <td>3.3300</td>\n",
       "      <td>6.4044</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.3370</td>\n",
       "      <td>11.1201</td>\n",
       "      <td>6.1154</td>\n",
       "      <td>18.6935</td>\n",
       "      <td>16.2878</td>\n",
       "      <td>14.7213</td>\n",
       "      <td>14.4695</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.8822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-30 00:00:00+08:00</th>\n",
       "      <td>10.4262</td>\n",
       "      <td>25.5642</td>\n",
       "      <td>2.0202</td>\n",
       "      <td>5.9586</td>\n",
       "      <td>6.8804</td>\n",
       "      <td>5.8579</td>\n",
       "      <td>4.3505</td>\n",
       "      <td>3.7878</td>\n",
       "      <td>3.3370</td>\n",
       "      <td>6.2704</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.0444</td>\n",
       "      <td>11.1255</td>\n",
       "      <td>6.1154</td>\n",
       "      <td>18.7328</td>\n",
       "      <td>16.4690</td>\n",
       "      <td>14.3716</td>\n",
       "      <td>14.4695</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.7350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-31 00:00:00+08:00</th>\n",
       "      <td>10.6237</td>\n",
       "      <td>26.2364</td>\n",
       "      <td>2.1619</td>\n",
       "      <td>6.1133</td>\n",
       "      <td>7.0533</td>\n",
       "      <td>5.9495</td>\n",
       "      <td>4.4612</td>\n",
       "      <td>3.8683</td>\n",
       "      <td>3.3932</td>\n",
       "      <td>6.5480</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.5916</td>\n",
       "      <td>11.7790</td>\n",
       "      <td>6.4447</td>\n",
       "      <td>19.6177</td>\n",
       "      <td>16.8314</td>\n",
       "      <td>15.3740</td>\n",
       "      <td>14.9219</td>\n",
       "      <td>NaN</td>\n",
       "      <td>22.5593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-01 00:00:00+08:00</th>\n",
       "      <td>10.5656</td>\n",
       "      <td>26.1796</td>\n",
       "      <td>2.1194</td>\n",
       "      <td>6.0644</td>\n",
       "      <td>7.0395</td>\n",
       "      <td>5.8775</td>\n",
       "      <td>4.4357</td>\n",
       "      <td>3.8463</td>\n",
       "      <td>3.3932</td>\n",
       "      <td>6.5575</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.5591</td>\n",
       "      <td>11.8978</td>\n",
       "      <td>6.4971</td>\n",
       "      <td>19.5325</td>\n",
       "      <td>16.5358</td>\n",
       "      <td>15.4323</td>\n",
       "      <td>16.4128</td>\n",
       "      <td>NaN</td>\n",
       "      <td>22.4343</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>101 rows × 223 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "symbol                     SHSE.600000  SHSE.600009  SHSE.600010  SHSE.600011  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00      10.3391      26.7667       2.3108       6.7075   \n",
       "2016-01-05 00:00:00+08:00      10.4320      27.2306       2.3675       6.6912   \n",
       "2016-01-06 00:00:00+08:00      10.5133      27.9313       2.5659       6.8377   \n",
       "2016-01-07 00:00:00+08:00      10.1706      26.5016       2.3179       6.3412   \n",
       "2016-01-08 00:00:00+08:00      10.1590      26.5394       2.5163       6.4958   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00      10.2810      25.5737       2.0343       5.9423   \n",
       "2016-05-27 00:00:00+08:00      10.3042      25.5263       2.0202       5.9179   \n",
       "2016-05-30 00:00:00+08:00      10.4262      25.5642       2.0202       5.9586   \n",
       "2016-05-31 00:00:00+08:00      10.6237      26.2364       2.1619       6.1133   \n",
       "2016-06-01 00:00:00+08:00      10.5656      26.1796       2.1194       6.0644   \n",
       "\n",
       "symbol                     SHSE.600015  SHSE.600016  SHSE.600018  SHSE.600019  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00       7.9038       5.8563       5.0912       3.8244   \n",
       "2016-01-05 00:00:00+08:00       7.9453       5.9146       5.1338       3.9706   \n",
       "2016-01-06 00:00:00+08:00       7.9591       5.9341       5.2190       4.3655   \n",
       "2016-01-07 00:00:00+08:00       7.4198       5.5774       4.8188       3.9341   \n",
       "2016-01-08 00:00:00+08:00       7.4889       5.6423       4.9635       4.3289   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00       6.8666       5.8252       4.3165       3.7805   \n",
       "2016-05-27 00:00:00+08:00       6.8597       5.8317       4.3165       3.8098   \n",
       "2016-05-30 00:00:00+08:00       6.8804       5.8579       4.3505       3.7878   \n",
       "2016-05-31 00:00:00+08:00       7.0533       5.9495       4.4612       3.8683   \n",
       "2016-06-01 00:00:00+08:00       7.0395       5.8775       4.4357       3.8463   \n",
       "\n",
       "symbol                     SHSE.600028  SHSE.600029  ...  SZSE.300142  \\\n",
       "eob                                                  ...                \n",
       "2016-01-04 00:00:00+08:00       3.3581       7.4287  ...      11.8869   \n",
       "2016-01-05 00:00:00+08:00       3.3300       7.2181  ...      11.2586   \n",
       "2016-01-06 00:00:00+08:00       3.4424       7.4957  ...      11.5179   \n",
       "2016-01-07 00:00:00+08:00       3.2668       7.0362  ...      10.6204   \n",
       "2016-01-08 00:00:00+08:00       3.3511       7.3808  ...      10.5207   \n",
       "...                                ...          ...  ...          ...   \n",
       "2016-05-26 00:00:00+08:00       3.3370       6.4044  ...          NaN   \n",
       "2016-05-27 00:00:00+08:00       3.3300       6.4044  ...          NaN   \n",
       "2016-05-30 00:00:00+08:00       3.3370       6.2704  ...          NaN   \n",
       "2016-05-31 00:00:00+08:00       3.3932       6.5480  ...          NaN   \n",
       "2016-06-01 00:00:00+08:00       3.3932       6.5575  ...          NaN   \n",
       "\n",
       "symbol                     SZSE.300144  SZSE.300274  SZSE.300316  SZSE.300347  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00      14.0882      13.3290       9.9046      18.1614   \n",
       "2016-01-05 00:00:00+08:00      13.4559      12.9186       9.4135      18.3705   \n",
       "2016-01-06 00:00:00+08:00      13.8558      13.0698       9.7483      18.6906   \n",
       "2016-01-07 00:00:00+08:00      12.4778      11.7628       8.8777      17.1227   \n",
       "2016-01-08 00:00:00+08:00      13.1911      11.8978       8.7884      17.1292   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00      13.4507      11.2065       6.1453      19.1064   \n",
       "2016-05-27 00:00:00+08:00      13.3370      11.1201       6.1154      18.6935   \n",
       "2016-05-30 00:00:00+08:00      13.0444      11.1255       6.1154      18.7328   \n",
       "2016-05-31 00:00:00+08:00      13.5916      11.7790       6.4447      19.6177   \n",
       "2016-06-01 00:00:00+08:00      13.5591      11.8978       6.4971      19.5325   \n",
       "\n",
       "symbol                     SZSE.300408  SZSE.300413  SZSE.300433  SZSE.300450  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00      16.5358      20.7707      13.2373       9.6104   \n",
       "2016-01-05 00:00:00+08:00      16.4272      19.3836      13.2355       9.9645   \n",
       "2016-01-06 00:00:00+08:00      16.6538      20.1996      13.6862       9.9706   \n",
       "2016-01-07 00:00:00+08:00      15.1055      18.1773      12.3343       8.9731   \n",
       "2016-01-08 00:00:00+08:00      15.3793      17.9208      12.5156       9.0817   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00      16.3832      14.4882      13.6122          NaN   \n",
       "2016-05-27 00:00:00+08:00      16.2878      14.7213      14.4695          NaN   \n",
       "2016-05-30 00:00:00+08:00      16.4690      14.3716      14.4695          NaN   \n",
       "2016-05-31 00:00:00+08:00      16.8314      15.3740      14.9219          NaN   \n",
       "2016-06-01 00:00:00+08:00      16.5358      15.4323      16.4128          NaN   \n",
       "\n",
       "symbol                     SZSE.300498  \n",
       "eob                                     \n",
       "2016-01-04 00:00:00+08:00      21.5780  \n",
       "2016-01-05 00:00:00+08:00      22.0834  \n",
       "2016-01-06 00:00:00+08:00      23.9772  \n",
       "2016-01-07 00:00:00+08:00      21.6271  \n",
       "2016-01-08 00:00:00+08:00      23.7908  \n",
       "...                                ...  \n",
       "2016-05-26 00:00:00+08:00      21.4701  \n",
       "2016-05-27 00:00:00+08:00      21.8822  \n",
       "2016-05-30 00:00:00+08:00      21.7350  \n",
       "2016-05-31 00:00:00+08:00      22.5593  \n",
       "2016-06-01 00:00:00+08:00      22.4343  \n",
       "\n",
       "[101 rows x 223 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history_data_n=history_data.set_index([\"eob\",\"symbol\"]).unstack().close\n",
    "history_data_n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>symbol</th>\n",
       "      <th>SHSE.600000</th>\n",
       "      <th>SHSE.600009</th>\n",
       "      <th>SHSE.600010</th>\n",
       "      <th>SHSE.600011</th>\n",
       "      <th>SHSE.600015</th>\n",
       "      <th>SHSE.600016</th>\n",
       "      <th>SHSE.600018</th>\n",
       "      <th>SHSE.600019</th>\n",
       "      <th>SHSE.600028</th>\n",
       "      <th>SHSE.600029</th>\n",
       "      <th>...</th>\n",
       "      <th>SZSE.300142</th>\n",
       "      <th>SZSE.300144</th>\n",
       "      <th>SZSE.300274</th>\n",
       "      <th>SZSE.300316</th>\n",
       "      <th>SZSE.300347</th>\n",
       "      <th>SZSE.300408</th>\n",
       "      <th>SZSE.300413</th>\n",
       "      <th>SZSE.300433</th>\n",
       "      <th>SZSE.300450</th>\n",
       "      <th>SZSE.300498</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>eob</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-01-04 00:00:00+08:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-05 00:00:00+08:00</th>\n",
       "      <td>0.0090</td>\n",
       "      <td>0.0173</td>\n",
       "      <td>0.0245</td>\n",
       "      <td>-0.0024</td>\n",
       "      <td>0.0052</td>\n",
       "      <td>0.0100</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0382</td>\n",
       "      <td>-0.0084</td>\n",
       "      <td>-0.0284</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.0529</td>\n",
       "      <td>-0.0449</td>\n",
       "      <td>-0.0308</td>\n",
       "      <td>-0.0496</td>\n",
       "      <td>0.0115</td>\n",
       "      <td>-0.0066</td>\n",
       "      <td>-0.0668</td>\n",
       "      <td>-0.0001</td>\n",
       "      <td>0.0368</td>\n",
       "      <td>0.0234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-06 00:00:00+08:00</th>\n",
       "      <td>0.0078</td>\n",
       "      <td>0.0257</td>\n",
       "      <td>0.0838</td>\n",
       "      <td>0.0219</td>\n",
       "      <td>0.0017</td>\n",
       "      <td>0.0033</td>\n",
       "      <td>0.0166</td>\n",
       "      <td>0.0994</td>\n",
       "      <td>0.0338</td>\n",
       "      <td>0.0385</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0230</td>\n",
       "      <td>0.0297</td>\n",
       "      <td>0.0117</td>\n",
       "      <td>0.0356</td>\n",
       "      <td>0.0174</td>\n",
       "      <td>0.0138</td>\n",
       "      <td>0.0421</td>\n",
       "      <td>0.0340</td>\n",
       "      <td>0.0006</td>\n",
       "      <td>0.0858</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-07 00:00:00+08:00</th>\n",
       "      <td>-0.0326</td>\n",
       "      <td>-0.0512</td>\n",
       "      <td>-0.0967</td>\n",
       "      <td>-0.0726</td>\n",
       "      <td>-0.0678</td>\n",
       "      <td>-0.0601</td>\n",
       "      <td>-0.0767</td>\n",
       "      <td>-0.0988</td>\n",
       "      <td>-0.0510</td>\n",
       "      <td>-0.0613</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.0779</td>\n",
       "      <td>-0.0995</td>\n",
       "      <td>-0.1000</td>\n",
       "      <td>-0.0893</td>\n",
       "      <td>-0.0839</td>\n",
       "      <td>-0.0930</td>\n",
       "      <td>-0.1001</td>\n",
       "      <td>-0.0988</td>\n",
       "      <td>-0.1000</td>\n",
       "      <td>-0.0980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-08 00:00:00+08:00</th>\n",
       "      <td>-0.0011</td>\n",
       "      <td>0.0014</td>\n",
       "      <td>0.0856</td>\n",
       "      <td>0.0244</td>\n",
       "      <td>0.0093</td>\n",
       "      <td>0.0116</td>\n",
       "      <td>0.0300</td>\n",
       "      <td>0.1004</td>\n",
       "      <td>0.0258</td>\n",
       "      <td>0.0490</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.0094</td>\n",
       "      <td>0.0572</td>\n",
       "      <td>0.0115</td>\n",
       "      <td>-0.0101</td>\n",
       "      <td>0.0004</td>\n",
       "      <td>0.0181</td>\n",
       "      <td>-0.0141</td>\n",
       "      <td>0.0147</td>\n",
       "      <td>0.0121</td>\n",
       "      <td>0.1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-26 00:00:00+08:00</th>\n",
       "      <td>0.0017</td>\n",
       "      <td>0.0056</td>\n",
       "      <td>0.0177</td>\n",
       "      <td>-0.0014</td>\n",
       "      <td>0.0010</td>\n",
       "      <td>0.0045</td>\n",
       "      <td>-0.0020</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0085</td>\n",
       "      <td>-0.0191</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0084</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>-0.0024</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.0184</td>\n",
       "      <td>-0.0170</td>\n",
       "      <td>0.0366</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-27 00:00:00+08:00</th>\n",
       "      <td>0.0023</td>\n",
       "      <td>-0.0019</td>\n",
       "      <td>-0.0070</td>\n",
       "      <td>-0.0041</td>\n",
       "      <td>-0.0010</td>\n",
       "      <td>0.0011</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0077</td>\n",
       "      <td>-0.0021</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0085</td>\n",
       "      <td>-0.0077</td>\n",
       "      <td>-0.0049</td>\n",
       "      <td>-0.0216</td>\n",
       "      <td>-0.0058</td>\n",
       "      <td>0.0161</td>\n",
       "      <td>0.0630</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-30 00:00:00+08:00</th>\n",
       "      <td>0.0118</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0069</td>\n",
       "      <td>0.0030</td>\n",
       "      <td>0.0045</td>\n",
       "      <td>0.0079</td>\n",
       "      <td>-0.0058</td>\n",
       "      <td>0.0021</td>\n",
       "      <td>-0.0209</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0219</td>\n",
       "      <td>0.0005</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0021</td>\n",
       "      <td>0.0111</td>\n",
       "      <td>-0.0238</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0067</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-31 00:00:00+08:00</th>\n",
       "      <td>0.0189</td>\n",
       "      <td>0.0263</td>\n",
       "      <td>0.0702</td>\n",
       "      <td>0.0260</td>\n",
       "      <td>0.0251</td>\n",
       "      <td>0.0156</td>\n",
       "      <td>0.0254</td>\n",
       "      <td>0.0212</td>\n",
       "      <td>0.0168</td>\n",
       "      <td>0.0443</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0419</td>\n",
       "      <td>0.0587</td>\n",
       "      <td>0.0539</td>\n",
       "      <td>0.0472</td>\n",
       "      <td>0.0220</td>\n",
       "      <td>0.0697</td>\n",
       "      <td>0.0313</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0379</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-06-01 00:00:00+08:00</th>\n",
       "      <td>-0.0055</td>\n",
       "      <td>-0.0022</td>\n",
       "      <td>-0.0197</td>\n",
       "      <td>-0.0080</td>\n",
       "      <td>-0.0020</td>\n",
       "      <td>-0.0121</td>\n",
       "      <td>-0.0057</td>\n",
       "      <td>-0.0057</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0024</td>\n",
       "      <td>0.0101</td>\n",
       "      <td>0.0081</td>\n",
       "      <td>-0.0043</td>\n",
       "      <td>-0.0176</td>\n",
       "      <td>0.0038</td>\n",
       "      <td>0.0999</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.0055</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>101 rows × 223 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "symbol                     SHSE.600000  SHSE.600009  SHSE.600010  SHSE.600011  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00          NaN          NaN          NaN          NaN   \n",
       "2016-01-05 00:00:00+08:00       0.0090       0.0173       0.0245      -0.0024   \n",
       "2016-01-06 00:00:00+08:00       0.0078       0.0257       0.0838       0.0219   \n",
       "2016-01-07 00:00:00+08:00      -0.0326      -0.0512      -0.0967      -0.0726   \n",
       "2016-01-08 00:00:00+08:00      -0.0011       0.0014       0.0856       0.0244   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00       0.0017       0.0056       0.0177      -0.0014   \n",
       "2016-05-27 00:00:00+08:00       0.0023      -0.0019      -0.0070      -0.0041   \n",
       "2016-05-30 00:00:00+08:00       0.0118       0.0015       0.0000       0.0069   \n",
       "2016-05-31 00:00:00+08:00       0.0189       0.0263       0.0702       0.0260   \n",
       "2016-06-01 00:00:00+08:00      -0.0055      -0.0022      -0.0197      -0.0080   \n",
       "\n",
       "symbol                     SHSE.600015  SHSE.600016  SHSE.600018  SHSE.600019  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00          NaN          NaN          NaN          NaN   \n",
       "2016-01-05 00:00:00+08:00       0.0052       0.0100       0.0084       0.0382   \n",
       "2016-01-06 00:00:00+08:00       0.0017       0.0033       0.0166       0.0994   \n",
       "2016-01-07 00:00:00+08:00      -0.0678      -0.0601      -0.0767      -0.0988   \n",
       "2016-01-08 00:00:00+08:00       0.0093       0.0116       0.0300       0.1004   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00       0.0010       0.0045      -0.0020       0.0000   \n",
       "2016-05-27 00:00:00+08:00      -0.0010       0.0011       0.0000       0.0077   \n",
       "2016-05-30 00:00:00+08:00       0.0030       0.0045       0.0079      -0.0058   \n",
       "2016-05-31 00:00:00+08:00       0.0251       0.0156       0.0254       0.0212   \n",
       "2016-06-01 00:00:00+08:00      -0.0020      -0.0121      -0.0057      -0.0057   \n",
       "\n",
       "symbol                     SHSE.600028  SHSE.600029  ...  SZSE.300142  \\\n",
       "eob                                                  ...                \n",
       "2016-01-04 00:00:00+08:00          NaN          NaN  ...          NaN   \n",
       "2016-01-05 00:00:00+08:00      -0.0084      -0.0284  ...      -0.0529   \n",
       "2016-01-06 00:00:00+08:00       0.0338       0.0385  ...       0.0230   \n",
       "2016-01-07 00:00:00+08:00      -0.0510      -0.0613  ...      -0.0779   \n",
       "2016-01-08 00:00:00+08:00       0.0258       0.0490  ...      -0.0094   \n",
       "...                                ...          ...  ...          ...   \n",
       "2016-05-26 00:00:00+08:00       0.0085      -0.0191  ...          NaN   \n",
       "2016-05-27 00:00:00+08:00      -0.0021       0.0000  ...          NaN   \n",
       "2016-05-30 00:00:00+08:00       0.0021      -0.0209  ...          NaN   \n",
       "2016-05-31 00:00:00+08:00       0.0168       0.0443  ...          NaN   \n",
       "2016-06-01 00:00:00+08:00       0.0000       0.0015  ...          NaN   \n",
       "\n",
       "symbol                     SZSE.300144  SZSE.300274  SZSE.300316  SZSE.300347  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00          NaN          NaN          NaN          NaN   \n",
       "2016-01-05 00:00:00+08:00      -0.0449      -0.0308      -0.0496       0.0115   \n",
       "2016-01-06 00:00:00+08:00       0.0297       0.0117       0.0356       0.0174   \n",
       "2016-01-07 00:00:00+08:00      -0.0995      -0.1000      -0.0893      -0.0839   \n",
       "2016-01-08 00:00:00+08:00       0.0572       0.0115      -0.0101       0.0004   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00      -0.0084       0.0048      -0.0024      -0.0003   \n",
       "2016-05-27 00:00:00+08:00      -0.0085      -0.0077      -0.0049      -0.0216   \n",
       "2016-05-30 00:00:00+08:00      -0.0219       0.0005       0.0000       0.0021   \n",
       "2016-05-31 00:00:00+08:00       0.0419       0.0587       0.0539       0.0472   \n",
       "2016-06-01 00:00:00+08:00      -0.0024       0.0101       0.0081      -0.0043   \n",
       "\n",
       "symbol                     SZSE.300408  SZSE.300413  SZSE.300433  SZSE.300450  \\\n",
       "eob                                                                             \n",
       "2016-01-04 00:00:00+08:00          NaN          NaN          NaN          NaN   \n",
       "2016-01-05 00:00:00+08:00      -0.0066      -0.0668      -0.0001       0.0368   \n",
       "2016-01-06 00:00:00+08:00       0.0138       0.0421       0.0340       0.0006   \n",
       "2016-01-07 00:00:00+08:00      -0.0930      -0.1001      -0.0988      -0.1000   \n",
       "2016-01-08 00:00:00+08:00       0.0181      -0.0141       0.0147       0.0121   \n",
       "...                                ...          ...          ...          ...   \n",
       "2016-05-26 00:00:00+08:00       0.0184      -0.0170       0.0366          NaN   \n",
       "2016-05-27 00:00:00+08:00      -0.0058       0.0161       0.0630          NaN   \n",
       "2016-05-30 00:00:00+08:00       0.0111      -0.0238       0.0000          NaN   \n",
       "2016-05-31 00:00:00+08:00       0.0220       0.0697       0.0313          NaN   \n",
       "2016-06-01 00:00:00+08:00      -0.0176       0.0038       0.0999          NaN   \n",
       "\n",
       "symbol                     SZSE.300498  \n",
       "eob                                     \n",
       "2016-01-04 00:00:00+08:00          NaN  \n",
       "2016-01-05 00:00:00+08:00       0.0234  \n",
       "2016-01-06 00:00:00+08:00       0.0858  \n",
       "2016-01-07 00:00:00+08:00      -0.0980  \n",
       "2016-01-08 00:00:00+08:00       0.1000  \n",
       "...                                ...  \n",
       "2016-05-26 00:00:00+08:00      -0.0075  \n",
       "2016-05-27 00:00:00+08:00       0.0192  \n",
       "2016-05-30 00:00:00+08:00      -0.0067  \n",
       "2016-05-31 00:00:00+08:00       0.0379  \n",
       "2016-06-01 00:00:00+08:00      -0.0055  \n",
       "\n",
       "[101 rows x 223 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history_data_p=history_data_n/history_data_n.shift(1)-1\n",
    "history_data_p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "#help(history_data.set_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.600000    0.0090\n",
       "SHSE.600009    0.0173\n",
       "SHSE.600010    0.0245\n",
       "SHSE.600011   -0.0024\n",
       "SHSE.600015    0.0052\n",
       "                ...  \n",
       "SZSE.300408   -0.0066\n",
       "SZSE.300413   -0.0668\n",
       "SZSE.300433   -0.0001\n",
       "SZSE.300450    0.0368\n",
       "SZSE.300498    0.0234\n",
       "Name: 2016-01-05 00:00:00+08:00, Length: 223, dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history_data_p.loc[\"2016-01-05\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据的去极值与标准化\n",
    "\n",
    "* winsorize(xxx, limits=0.03)\n",
    "\n",
    "* spearmanr(xxx,xxx)# pvalue要小于0.05才有统计学意义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='symbol'>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "masked_array(data=[ 74.58339691,  41.10390091, 178.6723938 ,  95.98829651,\n",
       "                    37.2132988 ,  12.07149982, 157.63400269,  46.55820084,\n",
       "                   273.00839233,  42.85400009,  23.45689964,  41.85660172,\n",
       "                   212.48339844,  46.67760086,  29.75429916,  50.69549942,\n",
       "                    92.73570251,  51.78839874,  86.88200378,  41.99980164,\n",
       "                    86.53309631,  43.02700043,  47.32130051,  84.86840057,\n",
       "                   196.60629272,  55.16479874,  24.69860077,  59.84970093,\n",
       "                    26.76519966,  27.64509964, 145.019104  ,  44.13629913,\n",
       "                    80.84629822,  21.15740013,  43.60720062,  34.81940079,\n",
       "                   104.07109833, 746.55169678,  24.00709915, 746.55169678,\n",
       "                   119.92539978,  34.51079941,  23.84519958,  43.10549927,\n",
       "                   220.17430115,   9.97220039, 309.17590332,  62.04380035,\n",
       "                    30.66430092, 113.05239868,  34.65449905,  28.9008007 ,\n",
       "                   203.02839661,  60.79040146,  25.34370041,   7.98850012,\n",
       "                    39.02339935,  26.12299919,  37.07659912,  70.24539948,\n",
       "                   149.71910095,  91.81510162,  21.42379951,  38.88660049,\n",
       "                    70.26270294,  29.59370041, 568.67462158,  16.80240059,\n",
       "                     7.0605998 ,  25.99580002, 529.87231445,  11.87689972,\n",
       "                     6.79250002,   7.39599991,  20.47999954,  14.86880016,\n",
       "                    12.20160007,  42.96920013,  18.65010071,  64.43689728,\n",
       "                     7.79449987,   8.48939991,  30.87599945, 746.55169678,\n",
       "                    57.16139984,  72.10520172,   7.77650023,  52.53379822,\n",
       "                    71.52819824,  26.84180069,  95.03430176,  39.81100082,\n",
       "                   746.55169678, 135.33889771,  42.62590027,  24.82279968,\n",
       "                    23.98550034,  60.93209839,  15.12240028,  29.63330078,\n",
       "                   -34.52769852,  13.47159958,  17.40690041,  13.98019981,\n",
       "                    29.77840042,  15.48390007,  56.77149963,   5.75029993,\n",
       "                    -4.21829987,  22.30850029,  23.0515995 ,   9.05650043,\n",
       "                    13.88370037,  95.8065033 ,  30.40780067, 228.82650757,\n",
       "                     6.14519978,   6.7177    ,   7.77260017,   8.18690014,\n",
       "                    17.14550018,  26.66449928, 493.9085083 ,  12.24520016,\n",
       "                    14.90180016,  63.98939896,  31.43549919,   7.15450001,\n",
       "                    66.1631012 ,  28.20339966,  39.83010101,  28.24850082,\n",
       "                     9.49709988,   8.61019993,  44.74670029, -34.52769852,\n",
       "                    19.69939995,  38.14229965, 179.92280579,  26.58429909,\n",
       "                    31.08919907,  13.75030041, 149.36480713,  16.69989967,\n",
       "                    19.59499931,  15.81040001, 139.5664978 ,  28.33959961,\n",
       "                   162.16929626, 523.87017822,  30.96890068,  27.24510002,\n",
       "                   244.11700439,   5.64669991, 261.29730225, 249.71260071,\n",
       "                     6.56150007, 253.81239319,  59.47629929, 179.88699341,\n",
       "                    51.34120178,  32.10620117, -34.52769852, 116.686203  ,\n",
       "                   104.85359955,  43.94440079,  29.82620049,  49.68059921,\n",
       "                   746.55169678, 671.00262451, 335.59719849, 746.55169678,\n",
       "                   113.51000214, 150.50270081, -34.52769852,  39.59989929,\n",
       "                    12.45110035,  21.06439972,  53.9272995 , 103.23239899,\n",
       "                    57.50379944,  22.88769913,  24.29310036,  40.39170074,\n",
       "                    14.26749992,  31.98509979, 326.62860107,  17.18759918,\n",
       "                    33.66960144,  94.0279007 , 145.6013031 ,   7.74669981,\n",
       "                    75.94380188,  21.06480026, -34.52769852,  21.19519997,\n",
       "                    16.2852993 ,  12.16889954,   9.06729984, 746.55169678,\n",
       "                   -34.52769852, 129.21989441,  11.67790031,  43.8572998 ,\n",
       "                    21.3010006 ,  63.57040024, -34.52769852,  19.01129913,\n",
       "                    39.13940048,   9.44550037,  22.20000076,  87.45950317,\n",
       "                    18.34110069,   8.75150013,   9.90229988,   7.64629984,\n",
       "                    27.01779938,   6.64069986,   8.12749958,  14.74880028,\n",
       "                    15.84669971,   6.84549999,  21.82999992],\n",
       "             mask=False,\n",
       "       fill_value=1e+20)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "winsorize(ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY, limits=0.03)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.601012     74.5834\n",
       "SHSE.601238     41.1039\n",
       "SZSE.300316    178.6724\n",
       "SZSE.300347     95.9883\n",
       "SHSE.603993     37.2133\n",
       "                 ...   \n",
       "SHSE.601169      8.1275\n",
       "SHSE.601186     14.7488\n",
       "SHSE.601318     15.8467\n",
       "SHSE.601328      6.8455\n",
       "SHSE.601390     21.8300\n",
       "Name: PELFY, Length: 223, dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def standardize_series(series):#标准化\n",
    "    std = series.std()\n",
    "    mean = series.mean()\n",
    "    return (series-mean)/std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.601012   -0.0999\n",
       "SHSE.601238   -0.1179\n",
       "SZSE.300316   -0.0438\n",
       "SZSE.300347   -0.0884\n",
       "SHSE.603993   -0.1200\n",
       "                ...  \n",
       "SHSE.601169   -0.1357\n",
       "SHSE.601186   -0.1321\n",
       "SHSE.601318   -0.1315\n",
       "SHSE.601328   -0.1364\n",
       "SHSE.601390   -0.1283\n",
       "Name: PELFY, Length: 223, dtype: float64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "standardize_series(ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### classwork 3\n",
    "\n",
    "* 获取“2016-01-04”的PELFY因子数据与“2016-01-05”的收益数据并合并入一个数据框中\n",
    "* 对因子数据进行去极值与标准化\n",
    "* 计算两者的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "symbol\n",
       "SHSE.601012     74.5834\n",
       "SHSE.601238     41.1039\n",
       "SZSE.300316    178.6724\n",
       "SZSE.300347     95.9883\n",
       "SHSE.603993     37.2133\n",
       "                 ...   \n",
       "SHSE.601169      8.1275\n",
       "SHSE.601186     14.7488\n",
       "SHSE.601318     15.8467\n",
       "SHSE.601328      6.8455\n",
       "SHSE.601390     21.8300\n",
       "Name: PELFY, Length: 223, dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_PELFY=ex3.loc[pd.to_datetime(\"2016-01-04\")].PELFY\n",
    "f_PELFY"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "p1=history_data_p.loc[\"2016-01-05\"]\n",
    "p1.name=\"r\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PELFY</th>\n",
       "      <th>r</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>SHSE.601012</th>\n",
       "      <td>74.5834</td>\n",
       "      <td>-0.0388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601238</th>\n",
       "      <td>41.1039</td>\n",
       "      <td>0.0388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300316</th>\n",
       "      <td>178.6724</td>\n",
       "      <td>-0.0496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>95.9883</td>\n",
       "      <td>0.0115</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.603993</th>\n",
       "      <td>37.2133</td>\n",
       "      <td>-0.0199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601169</th>\n",
       "      <td>8.1275</td>\n",
       "      <td>0.0060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601186</th>\n",
       "      <td>14.7488</td>\n",
       "      <td>-0.0170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601318</th>\n",
       "      <td>15.8467</td>\n",
       "      <td>0.0132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601328</th>\n",
       "      <td>6.8455</td>\n",
       "      <td>0.0148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601390</th>\n",
       "      <td>21.8300</td>\n",
       "      <td>-0.0172</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>212 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                PELFY       r\n",
       "symbol                       \n",
       "SHSE.601012   74.5834 -0.0388\n",
       "SHSE.601238   41.1039  0.0388\n",
       "SZSE.300316  178.6724 -0.0496\n",
       "SZSE.300347   95.9883  0.0115\n",
       "SHSE.603993   37.2133 -0.0199\n",
       "...               ...     ...\n",
       "SHSE.601169    8.1275  0.0060\n",
       "SHSE.601186   14.7488 -0.0170\n",
       "SHSE.601318   15.8467  0.0132\n",
       "SHSE.601328    6.8455  0.0148\n",
       "SHSE.601390   21.8300 -0.0172\n",
       "\n",
       "[212 rows x 2 columns]"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_p=pd.concat([f_PELFY,p1],axis=1).dropna()\n",
    "f_p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "f_p[\"PELFY_w\"]=winsorize(f_p.PELFY,limits=0.03)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='symbol'>"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f_p[[\"PELFY\",\"PELFY_w\"]].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "f_p[\"PELFY_w_s\"]=standardize_series(f_p.PELFY_w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PELFY</th>\n",
       "      <th>r</th>\n",
       "      <th>PELFY_w</th>\n",
       "      <th>PELFY_w_s</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>SHSE.601012</th>\n",
       "      <td>74.5834</td>\n",
       "      <td>-0.0388</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>-0.0055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601238</th>\n",
       "      <td>41.1039</td>\n",
       "      <td>0.0388</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>-0.2815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300316</th>\n",
       "      <td>178.6724</td>\n",
       "      <td>-0.0496</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>0.8525</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>95.9883</td>\n",
       "      <td>0.0115</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>0.1709</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.603993</th>\n",
       "      <td>37.2133</td>\n",
       "      <td>-0.0199</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>-0.3136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601169</th>\n",
       "      <td>8.1275</td>\n",
       "      <td>0.0060</td>\n",
       "      <td>8.1275</td>\n",
       "      <td>-0.5533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601186</th>\n",
       "      <td>14.7488</td>\n",
       "      <td>-0.0170</td>\n",
       "      <td>14.7488</td>\n",
       "      <td>-0.4987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601318</th>\n",
       "      <td>15.8467</td>\n",
       "      <td>0.0132</td>\n",
       "      <td>15.8467</td>\n",
       "      <td>-0.4897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601328</th>\n",
       "      <td>6.8455</td>\n",
       "      <td>0.0148</td>\n",
       "      <td>6.8455</td>\n",
       "      <td>-0.5639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601390</th>\n",
       "      <td>21.8300</td>\n",
       "      <td>-0.0172</td>\n",
       "      <td>21.8300</td>\n",
       "      <td>-0.4404</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>212 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                PELFY       r   PELFY_w  PELFY_w_s\n",
       "symbol                                            \n",
       "SHSE.601012   74.5834 -0.0388   74.5834    -0.0055\n",
       "SHSE.601238   41.1039  0.0388   41.1039    -0.2815\n",
       "SZSE.300316  178.6724 -0.0496  178.6724     0.8525\n",
       "SZSE.300347   95.9883  0.0115   95.9883     0.1709\n",
       "SHSE.603993   37.2133 -0.0199   37.2133    -0.3136\n",
       "...               ...     ...       ...        ...\n",
       "SHSE.601169    8.1275  0.0060    8.1275    -0.5533\n",
       "SHSE.601186   14.7488 -0.0170   14.7488    -0.4987\n",
       "SHSE.601318   15.8467  0.0132   15.8467    -0.4897\n",
       "SHSE.601328    6.8455  0.0148    6.8455    -0.5639\n",
       "SHSE.601390   21.8300 -0.0172   21.8300    -0.4404\n",
       "\n",
       "[212 rows x 4 columns]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SpearmanrResult(correlation=-0.1468832340854654, pvalue=0.03254796828126154)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spearmanr(f_p.r,f_p.PELFY_w_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='symbol'>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f_y.iloc[:,1].plot()\n",
    "f_y.iloc[:,2].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2016-01-05 00:00:00+08:00</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PELFY_w</th>\n",
       "      <th>PELFY_w_s</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>SHSE.600000</th>\n",
       "      <td>0.0090</td>\n",
       "      <td>7.0606</td>\n",
       "      <td>7.0606</td>\n",
       "      <td>-0.5621</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600009</th>\n",
       "      <td>0.0173</td>\n",
       "      <td>25.9958</td>\n",
       "      <td>25.9958</td>\n",
       "      <td>-0.4060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600010</th>\n",
       "      <td>0.0245</td>\n",
       "      <td>529.8723</td>\n",
       "      <td>529.8723</td>\n",
       "      <td>3.7476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600011</th>\n",
       "      <td>-0.0024</td>\n",
       "      <td>11.8769</td>\n",
       "      <td>11.8769</td>\n",
       "      <td>-0.5224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600015</th>\n",
       "      <td>0.0052</td>\n",
       "      <td>6.7925</td>\n",
       "      <td>6.7925</td>\n",
       "      <td>-0.5643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300408</th>\n",
       "      <td>-0.0066</td>\n",
       "      <td>46.6776</td>\n",
       "      <td>46.6776</td>\n",
       "      <td>-0.2355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300413</th>\n",
       "      <td>-0.0668</td>\n",
       "      <td>92.7357</td>\n",
       "      <td>92.7357</td>\n",
       "      <td>0.1441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300433</th>\n",
       "      <td>-0.0001</td>\n",
       "      <td>43.0270</td>\n",
       "      <td>43.0270</td>\n",
       "      <td>-0.2656</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300450</th>\n",
       "      <td>0.0368</td>\n",
       "      <td>196.6063</td>\n",
       "      <td>196.6063</td>\n",
       "      <td>1.0004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300498</th>\n",
       "      <td>0.0234</td>\n",
       "      <td>59.8497</td>\n",
       "      <td>59.8497</td>\n",
       "      <td>-0.1270</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>212 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             2016-01-05 00:00:00+08:00     PELFY   PELFY_w  PELFY_w_s\n",
       "symbol                                                               \n",
       "SHSE.600000                     0.0090    7.0606    7.0606    -0.5621\n",
       "SHSE.600009                     0.0173   25.9958   25.9958    -0.4060\n",
       "SHSE.600010                     0.0245  529.8723  529.8723     3.7476\n",
       "SHSE.600011                    -0.0024   11.8769   11.8769    -0.5224\n",
       "SHSE.600015                     0.0052    6.7925    6.7925    -0.5643\n",
       "...                                ...       ...       ...        ...\n",
       "SZSE.300408                    -0.0066   46.6776   46.6776    -0.2355\n",
       "SZSE.300413                    -0.0668   92.7357   92.7357     0.1441\n",
       "SZSE.300433                    -0.0001   43.0270   43.0270    -0.2656\n",
       "SZSE.300450                     0.0368  196.6063  196.6063     1.0004\n",
       "SZSE.300498                     0.0234   59.8497   59.8497    -0.1270\n",
       "\n",
       "[212 rows x 4 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SpearmanrResult(correlation=-0.1468832340854654, pvalue=0.03254796828126154)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#spearmanr(f_y_1.iloc[:,0],f_y_1[\"PELFY_s\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 计算所有天所有因子与收益率的相关性"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### classwork 4\n",
    "\n",
    "* 获取收益率并让其值后移一位，然后通过stack方法，让symbol变为行标。\n",
    "* 通过循环把所有因子列标准化与去极值\n",
    "* 收益与因子合并为一个数据框以保证索引对齐\n",
    "* 计算所有因子列与收益的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "h_m=history_data_p.shift(-1).stack()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "eob                        symbol     \n",
       "2016-01-04 00:00:00+08:00  SHSE.600000    0.0090\n",
       "                           SHSE.600009    0.0173\n",
       "                           SHSE.600010    0.0245\n",
       "                           SHSE.600011   -0.0024\n",
       "                           SHSE.600015    0.0052\n",
       "                                           ...  \n",
       "2016-05-31 00:00:00+08:00  SZSE.300347   -0.0043\n",
       "                           SZSE.300408   -0.0176\n",
       "                           SZSE.300413    0.0038\n",
       "                           SZSE.300433    0.0999\n",
       "                           SZSE.300498   -0.0055\n",
       "Length: 20995, dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h_m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['pub_date', 'TCLOSE', 'NEGOTIABLEMV', 'TOTMKTCAP', 'TURNRATE', 'PELFY',\n",
       "       'PETTM', 'PEMRQ', 'PELFYNPAAEI', 'PETTMNPAAEI'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>pub_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>end_date</th>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-01-04 00:00:00+08:00</th>\n",
       "      <th>SHSE.601012</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>12.36</td>\n",
       "      <td>2.0037e+10</td>\n",
       "      <td>2.1894e+10</td>\n",
       "      <td>1.6311</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>62.4308</td>\n",
       "      <td>66.8032</td>\n",
       "      <td>81.4258</td>\n",
       "      <td>79.4376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601238</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>20.35</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>0.0594</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>36.2214</td>\n",
       "      <td>36.3529</td>\n",
       "      <td>47.1458</td>\n",
       "      <td>44.8516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300316</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>13.31</td>\n",
       "      <td>1.0792e+10</td>\n",
       "      <td>1.1759e+10</td>\n",
       "      <td>1.2983</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>134.5585</td>\n",
       "      <td>122.7254</td>\n",
       "      <td>193.1035</td>\n",
       "      <td>128.6337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>27.80</td>\n",
       "      <td>8.1442e+09</td>\n",
       "      <td>1.2046e+10</td>\n",
       "      <td>1.2533</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>79.6783</td>\n",
       "      <td>81.7557</td>\n",
       "      <td>90.6420</td>\n",
       "      <td>87.2153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.603993</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>4.02</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>0.5201</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>67.8822</td>\n",
       "      <td>79.4405</td>\n",
       "      <td>50.0207</td>\n",
       "      <td>79.3375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-06-01 00:00:00+08:00</th>\n",
       "      <th>SZSE.002304</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>70.03</td>\n",
       "      <td>8.6399e+10</td>\n",
       "      <td>1.0553e+11</td>\n",
       "      <td>0.5170</td>\n",
       "      <td>19.6702</td>\n",
       "      <td>18.8654</td>\n",
       "      <td>10.7425</td>\n",
       "      <td>21.4678</td>\n",
       "      <td>10.9162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.002311</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.74</td>\n",
       "      <td>2.5560e+10</td>\n",
       "      <td>2.5789e+10</td>\n",
       "      <td>0.8867</td>\n",
       "      <td>33.0636</td>\n",
       "      <td>31.9707</td>\n",
       "      <td>164.4282</td>\n",
       "      <td>35.3513</td>\n",
       "      <td>176.4772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601989</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>6.16</td>\n",
       "      <td>1.1062e+11</td>\n",
       "      <td>1.1311e+11</td>\n",
       "      <td>0.5885</td>\n",
       "      <td>-43.1465</td>\n",
       "      <td>-40.4598</td>\n",
       "      <td>133.8134</td>\n",
       "      <td>-33.9623</td>\n",
       "      <td>2289.9270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600999</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.35</td>\n",
       "      <td>7.8531e+10</td>\n",
       "      <td>9.4963e+10</td>\n",
       "      <td>0.5441</td>\n",
       "      <td>8.7052</td>\n",
       "      <td>10.2610</td>\n",
       "      <td>23.5301</td>\n",
       "      <td>8.7416</td>\n",
       "      <td>23.8195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300033</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>79.90</td>\n",
       "      <td>2.1063e+10</td>\n",
       "      <td>4.2954e+10</td>\n",
       "      <td>7.0221</td>\n",
       "      <td>44.8738</td>\n",
       "      <td>41.5734</td>\n",
       "      <td>74.7478</td>\n",
       "      <td>45.8465</td>\n",
       "      <td>75.4029</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22569 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                       pub_date  TCLOSE  \\\n",
       "end_date                  symbol                                          \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012 2016-01-04 00:00:00+08:00   12.36   \n",
       "                          SHSE.601238 2016-01-04 00:00:00+08:00   20.35   \n",
       "                          SZSE.300316 2016-01-04 00:00:00+08:00   13.31   \n",
       "                          SZSE.300347 2016-01-04 00:00:00+08:00   27.80   \n",
       "                          SHSE.603993 2016-01-04 00:00:00+08:00    4.02   \n",
       "...                                                         ...     ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304 2016-06-01 00:00:00+08:00   70.03   \n",
       "                          SZSE.002311 2016-06-01 00:00:00+08:00   16.74   \n",
       "                          SHSE.601989 2016-06-01 00:00:00+08:00    6.16   \n",
       "                          SHSE.600999 2016-06-01 00:00:00+08:00   16.35   \n",
       "                          SZSE.300033 2016-06-01 00:00:00+08:00   79.90   \n",
       "\n",
       "                                       NEGOTIABLEMV   TOTMKTCAP  TURNRATE  \\\n",
       "end_date                  symbol                                            \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012    2.0037e+10  2.1894e+10    1.6311   \n",
       "                          SHSE.601238    8.5912e+10  8.5912e+10    0.0594   \n",
       "                          SZSE.300316    1.0792e+10  1.1759e+10    1.2983   \n",
       "                          SZSE.300347    8.1442e+09  1.2046e+10    1.2533   \n",
       "                          SHSE.603993    5.2074e+10  5.2074e+10    0.5201   \n",
       "...                                             ...         ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304    8.6399e+10  1.0553e+11    0.5170   \n",
       "                          SZSE.002311    2.5560e+10  2.5789e+10    0.8867   \n",
       "                          SHSE.601989    1.1062e+11  1.1311e+11    0.5885   \n",
       "                          SHSE.600999    7.8531e+10  9.4963e+10    0.5441   \n",
       "                          SZSE.300033    2.1063e+10  4.2954e+10    7.0221   \n",
       "\n",
       "                                          PELFY     PETTM     PEMRQ  \\\n",
       "end_date                  symbol                                      \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012   74.5834   62.4308   66.8032   \n",
       "                          SHSE.601238   41.1039   36.2214   36.3529   \n",
       "                          SZSE.300316  178.6724  134.5585  122.7254   \n",
       "                          SZSE.300347   95.9883   79.6783   81.7557   \n",
       "                          SHSE.603993   37.2133   67.8822   79.4405   \n",
       "...                                         ...       ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304   19.6702   18.8654   10.7425   \n",
       "                          SZSE.002311   33.0636   31.9707  164.4282   \n",
       "                          SHSE.601989  -43.1465  -40.4598  133.8134   \n",
       "                          SHSE.600999    8.7052   10.2610   23.5301   \n",
       "                          SZSE.300033   44.8738   41.5734   74.7478   \n",
       "\n",
       "                                       PELFYNPAAEI  PETTMNPAAEI  \n",
       "end_date                  symbol                                 \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012      81.4258      79.4376  \n",
       "                          SHSE.601238      47.1458      44.8516  \n",
       "                          SZSE.300316     193.1035     128.6337  \n",
       "                          SZSE.300347      90.6420      87.2153  \n",
       "                          SHSE.603993      50.0207      79.3375  \n",
       "...                                            ...          ...  \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304      21.4678      10.9162  \n",
       "                          SZSE.002311      35.3513     176.4772  \n",
       "                          SHSE.601989     -33.9623    2289.9270  \n",
       "                          SHSE.600999       8.7416      23.8195  \n",
       "                          SZSE.300033      45.8465      75.4029  \n",
       "\n",
       "[22569 rows x 10 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['pub_date', 'TCLOSE', 'NEGOTIABLEMV', 'TOTMKTCAP', 'TURNRATE', 'PELFY',\n",
       "       'PETTM', 'PEMRQ', 'PELFYNPAAEI', 'PETTMNPAAEI'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TCLOSE\n",
      "NEGOTIABLEMV\n",
      "TOTMKTCAP\n",
      "TURNRATE\n",
      "PELFY\n",
      "PETTM\n",
      "PEMRQ\n",
      "PELFYNPAAEI\n",
      "PETTMNPAAEI\n"
     ]
    }
   ],
   "source": [
    "for i in ex3.columns[1:]:\n",
    "    z1=winsorize(ex3[i],limits=0.03)\n",
    "    ex3[i+\"s\"]=standardize_series(z1)\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>pub_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "      <th>TCLOSEs</th>\n",
       "      <th>NEGOTIABLEMVs</th>\n",
       "      <th>TOTMKTCAPs</th>\n",
       "      <th>TURNRATEs</th>\n",
       "      <th>PELFYs</th>\n",
       "      <th>PETTMs</th>\n",
       "      <th>PEMRQs</th>\n",
       "      <th>PELFYNPAAEIs</th>\n",
       "      <th>PETTMNPAAEIs</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>end_date</th>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-01-04 00:00:00+08:00</th>\n",
       "      <th>SHSE.601012</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>12.36</td>\n",
       "      <td>2.0037e+10</td>\n",
       "      <td>2.1894e+10</td>\n",
       "      <td>1.6311</td>\n",
       "      <td>74.5834</td>\n",
       "      <td>62.4308</td>\n",
       "      <td>66.8032</td>\n",
       "      <td>81.4258</td>\n",
       "      <td>79.4376</td>\n",
       "      <td>-0.5240</td>\n",
       "      <td>-0.4777</td>\n",
       "      <td>-0.5887</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.0850</td>\n",
       "      <td>0.4315</td>\n",
       "      <td>0.0974</td>\n",
       "      <td>0.3126</td>\n",
       "      <td>0.3767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601238</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>20.35</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>8.5912e+10</td>\n",
       "      <td>0.0594</td>\n",
       "      <td>41.1039</td>\n",
       "      <td>36.2214</td>\n",
       "      <td>36.3529</td>\n",
       "      <td>47.1458</td>\n",
       "      <td>44.8516</td>\n",
       "      <td>-0.0234</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.2161</td>\n",
       "      <td>-0.7960</td>\n",
       "      <td>-0.2258</td>\n",
       "      <td>-0.0112</td>\n",
       "      <td>-0.1684</td>\n",
       "      <td>-0.0310</td>\n",
       "      <td>0.0239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300316</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>13.31</td>\n",
       "      <td>1.0792e+10</td>\n",
       "      <td>1.1759e+10</td>\n",
       "      <td>1.2983</td>\n",
       "      <td>178.6724</td>\n",
       "      <td>134.5585</td>\n",
       "      <td>122.7254</td>\n",
       "      <td>193.1035</td>\n",
       "      <td>128.6337</td>\n",
       "      <td>-0.4644</td>\n",
       "      <td>-0.5955</td>\n",
       "      <td>-0.7161</td>\n",
       "      <td>-0.0602</td>\n",
       "      <td>1.0513</td>\n",
       "      <td>1.6498</td>\n",
       "      <td>0.5857</td>\n",
       "      <td>1.4319</td>\n",
       "      <td>0.8786</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>27.80</td>\n",
       "      <td>8.1442e+09</td>\n",
       "      <td>1.2046e+10</td>\n",
       "      <td>1.2533</td>\n",
       "      <td>95.9883</td>\n",
       "      <td>79.6783</td>\n",
       "      <td>81.7557</td>\n",
       "      <td>90.6420</td>\n",
       "      <td>87.2153</td>\n",
       "      <td>0.4434</td>\n",
       "      <td>-0.6292</td>\n",
       "      <td>-0.7125</td>\n",
       "      <td>-0.0869</td>\n",
       "      <td>0.2837</td>\n",
       "      <td>0.7228</td>\n",
       "      <td>0.2280</td>\n",
       "      <td>0.4050</td>\n",
       "      <td>0.4561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.603993</th>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>4.02</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>5.2074e+10</td>\n",
       "      <td>0.5201</td>\n",
       "      <td>37.2133</td>\n",
       "      <td>67.8822</td>\n",
       "      <td>79.4405</td>\n",
       "      <td>50.0207</td>\n",
       "      <td>79.3375</td>\n",
       "      <td>-1.0465</td>\n",
       "      <td>-0.0697</td>\n",
       "      <td>-0.2093</td>\n",
       "      <td>-0.5224</td>\n",
       "      <td>-0.2619</td>\n",
       "      <td>0.5236</td>\n",
       "      <td>0.2078</td>\n",
       "      <td>-0.0022</td>\n",
       "      <td>0.3757</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-06-01 00:00:00+08:00</th>\n",
       "      <th>SZSE.002304</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>70.03</td>\n",
       "      <td>8.6399e+10</td>\n",
       "      <td>1.0553e+11</td>\n",
       "      <td>0.5170</td>\n",
       "      <td>19.6702</td>\n",
       "      <td>18.8654</td>\n",
       "      <td>10.7425</td>\n",
       "      <td>21.4678</td>\n",
       "      <td>10.9162</td>\n",
       "      <td>2.9777</td>\n",
       "      <td>0.3675</td>\n",
       "      <td>0.4628</td>\n",
       "      <td>-0.5242</td>\n",
       "      <td>-0.4248</td>\n",
       "      <td>-0.3043</td>\n",
       "      <td>-0.3921</td>\n",
       "      <td>-0.2884</td>\n",
       "      <td>-0.3223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.002311</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.74</td>\n",
       "      <td>2.5560e+10</td>\n",
       "      <td>2.5789e+10</td>\n",
       "      <td>0.8867</td>\n",
       "      <td>33.0636</td>\n",
       "      <td>31.9707</td>\n",
       "      <td>164.4282</td>\n",
       "      <td>35.3513</td>\n",
       "      <td>176.4772</td>\n",
       "      <td>-0.2495</td>\n",
       "      <td>-0.4074</td>\n",
       "      <td>-0.5397</td>\n",
       "      <td>-0.3047</td>\n",
       "      <td>-0.3005</td>\n",
       "      <td>-0.0829</td>\n",
       "      <td>0.9499</td>\n",
       "      <td>-0.1492</td>\n",
       "      <td>1.3667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.601989</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>6.16</td>\n",
       "      <td>1.1062e+11</td>\n",
       "      <td>1.1311e+11</td>\n",
       "      <td>0.5885</td>\n",
       "      <td>-43.1465</td>\n",
       "      <td>-40.4598</td>\n",
       "      <td>133.8134</td>\n",
       "      <td>-33.9623</td>\n",
       "      <td>2289.9270</td>\n",
       "      <td>-0.9124</td>\n",
       "      <td>0.6761</td>\n",
       "      <td>0.5580</td>\n",
       "      <td>-0.4818</td>\n",
       "      <td>-0.8719</td>\n",
       "      <td>-1.3063</td>\n",
       "      <td>0.6825</td>\n",
       "      <td>-0.8439</td>\n",
       "      <td>3.5748</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600999</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>16.35</td>\n",
       "      <td>7.8531e+10</td>\n",
       "      <td>9.4963e+10</td>\n",
       "      <td>0.5441</td>\n",
       "      <td>8.7052</td>\n",
       "      <td>10.2610</td>\n",
       "      <td>23.5301</td>\n",
       "      <td>8.7416</td>\n",
       "      <td>23.8195</td>\n",
       "      <td>-0.2740</td>\n",
       "      <td>0.2673</td>\n",
       "      <td>0.3299</td>\n",
       "      <td>-0.5081</td>\n",
       "      <td>-0.5266</td>\n",
       "      <td>-0.4496</td>\n",
       "      <td>-0.2804</td>\n",
       "      <td>-0.4159</td>\n",
       "      <td>-0.1907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300033</th>\n",
       "      <td>2016-06-01 00:00:00+08:00</td>\n",
       "      <td>79.90</td>\n",
       "      <td>2.1063e+10</td>\n",
       "      <td>4.2954e+10</td>\n",
       "      <td>7.0221</td>\n",
       "      <td>44.8738</td>\n",
       "      <td>41.5734</td>\n",
       "      <td>74.7478</td>\n",
       "      <td>45.8465</td>\n",
       "      <td>75.4029</td>\n",
       "      <td>2.9777</td>\n",
       "      <td>-0.4647</td>\n",
       "      <td>-0.3239</td>\n",
       "      <td>3.3392</td>\n",
       "      <td>-0.1908</td>\n",
       "      <td>0.0792</td>\n",
       "      <td>0.1668</td>\n",
       "      <td>-0.0440</td>\n",
       "      <td>0.3356</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>22569 rows × 19 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                       pub_date  TCLOSE  \\\n",
       "end_date                  symbol                                          \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012 2016-01-04 00:00:00+08:00   12.36   \n",
       "                          SHSE.601238 2016-01-04 00:00:00+08:00   20.35   \n",
       "                          SZSE.300316 2016-01-04 00:00:00+08:00   13.31   \n",
       "                          SZSE.300347 2016-01-04 00:00:00+08:00   27.80   \n",
       "                          SHSE.603993 2016-01-04 00:00:00+08:00    4.02   \n",
       "...                                                         ...     ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304 2016-06-01 00:00:00+08:00   70.03   \n",
       "                          SZSE.002311 2016-06-01 00:00:00+08:00   16.74   \n",
       "                          SHSE.601989 2016-06-01 00:00:00+08:00    6.16   \n",
       "                          SHSE.600999 2016-06-01 00:00:00+08:00   16.35   \n",
       "                          SZSE.300033 2016-06-01 00:00:00+08:00   79.90   \n",
       "\n",
       "                                       NEGOTIABLEMV   TOTMKTCAP  TURNRATE  \\\n",
       "end_date                  symbol                                            \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012    2.0037e+10  2.1894e+10    1.6311   \n",
       "                          SHSE.601238    8.5912e+10  8.5912e+10    0.0594   \n",
       "                          SZSE.300316    1.0792e+10  1.1759e+10    1.2983   \n",
       "                          SZSE.300347    8.1442e+09  1.2046e+10    1.2533   \n",
       "                          SHSE.603993    5.2074e+10  5.2074e+10    0.5201   \n",
       "...                                             ...         ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304    8.6399e+10  1.0553e+11    0.5170   \n",
       "                          SZSE.002311    2.5560e+10  2.5789e+10    0.8867   \n",
       "                          SHSE.601989    1.1062e+11  1.1311e+11    0.5885   \n",
       "                          SHSE.600999    7.8531e+10  9.4963e+10    0.5441   \n",
       "                          SZSE.300033    2.1063e+10  4.2954e+10    7.0221   \n",
       "\n",
       "                                          PELFY     PETTM     PEMRQ  \\\n",
       "end_date                  symbol                                      \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012   74.5834   62.4308   66.8032   \n",
       "                          SHSE.601238   41.1039   36.2214   36.3529   \n",
       "                          SZSE.300316  178.6724  134.5585  122.7254   \n",
       "                          SZSE.300347   95.9883   79.6783   81.7557   \n",
       "                          SHSE.603993   37.2133   67.8822   79.4405   \n",
       "...                                         ...       ...       ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304   19.6702   18.8654   10.7425   \n",
       "                          SZSE.002311   33.0636   31.9707  164.4282   \n",
       "                          SHSE.601989  -43.1465  -40.4598  133.8134   \n",
       "                          SHSE.600999    8.7052   10.2610   23.5301   \n",
       "                          SZSE.300033   44.8738   41.5734   74.7478   \n",
       "\n",
       "                                       PELFYNPAAEI  PETTMNPAAEI  TCLOSEs  \\\n",
       "end_date                  symbol                                           \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012      81.4258      79.4376  -0.5240   \n",
       "                          SHSE.601238      47.1458      44.8516  -0.0234   \n",
       "                          SZSE.300316     193.1035     128.6337  -0.4644   \n",
       "                          SZSE.300347      90.6420      87.2153   0.4434   \n",
       "                          SHSE.603993      50.0207      79.3375  -1.0465   \n",
       "...                                            ...          ...      ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304      21.4678      10.9162   2.9777   \n",
       "                          SZSE.002311      35.3513     176.4772  -0.2495   \n",
       "                          SHSE.601989     -33.9623    2289.9270  -0.9124   \n",
       "                          SHSE.600999       8.7416      23.8195  -0.2740   \n",
       "                          SZSE.300033      45.8465      75.4029   2.9777   \n",
       "\n",
       "                                       NEGOTIABLEMVs  TOTMKTCAPs  TURNRATEs  \\\n",
       "end_date                  symbol                                              \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012        -0.4777     -0.5887     0.1374   \n",
       "                          SHSE.601238         0.3613      0.2161    -0.7960   \n",
       "                          SZSE.300316        -0.5955     -0.7161    -0.0602   \n",
       "                          SZSE.300347        -0.6292     -0.7125    -0.0869   \n",
       "                          SHSE.603993        -0.0697     -0.2093    -0.5224   \n",
       "...                                              ...         ...        ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304         0.3675      0.4628    -0.5242   \n",
       "                          SZSE.002311        -0.4074     -0.5397    -0.3047   \n",
       "                          SHSE.601989         0.6761      0.5580    -0.4818   \n",
       "                          SHSE.600999         0.2673      0.3299    -0.5081   \n",
       "                          SZSE.300033        -0.4647     -0.3239     3.3392   \n",
       "\n",
       "                                       PELFYs  PETTMs  PEMRQs  PELFYNPAAEIs  \\\n",
       "end_date                  symbol                                              \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012  0.0850  0.4315  0.0974        0.3126   \n",
       "                          SHSE.601238 -0.2258 -0.0112 -0.1684       -0.0310   \n",
       "                          SZSE.300316  1.0513  1.6498  0.5857        1.4319   \n",
       "                          SZSE.300347  0.2837  0.7228  0.2280        0.4050   \n",
       "                          SHSE.603993 -0.2619  0.5236  0.2078       -0.0022   \n",
       "...                                       ...     ...     ...           ...   \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304 -0.4248 -0.3043 -0.3921       -0.2884   \n",
       "                          SZSE.002311 -0.3005 -0.0829  0.9499       -0.1492   \n",
       "                          SHSE.601989 -0.8719 -1.3063  0.6825       -0.8439   \n",
       "                          SHSE.600999 -0.5266 -0.4496 -0.2804       -0.4159   \n",
       "                          SZSE.300033 -0.1908  0.0792  0.1668       -0.0440   \n",
       "\n",
       "                                       PETTMNPAAEIs  \n",
       "end_date                  symbol                     \n",
       "2016-01-04 00:00:00+08:00 SHSE.601012        0.3767  \n",
       "                          SHSE.601238        0.0239  \n",
       "                          SZSE.300316        0.8786  \n",
       "                          SZSE.300347        0.4561  \n",
       "                          SHSE.603993        0.3757  \n",
       "...                                             ...  \n",
       "2016-06-01 00:00:00+08:00 SZSE.002304       -0.3223  \n",
       "                          SZSE.002311        1.3667  \n",
       "                          SHSE.601989        3.5748  \n",
       "                          SHSE.600999       -0.1907  \n",
       "                          SZSE.300033        0.3356  \n",
       "\n",
       "[22569 rows x 19 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>pub_date</th>\n",
       "      <th>TCLOSE</th>\n",
       "      <th>NEGOTIABLEMV</th>\n",
       "      <th>TOTMKTCAP</th>\n",
       "      <th>TURNRATE</th>\n",
       "      <th>PELFY</th>\n",
       "      <th>PETTM</th>\n",
       "      <th>PEMRQ</th>\n",
       "      <th>PELFYNPAAEI</th>\n",
       "      <th>PETTMNPAAEI</th>\n",
       "      <th>TCLOSEs</th>\n",
       "      <th>NEGOTIABLEMVs</th>\n",
       "      <th>TOTMKTCAPs</th>\n",
       "      <th>TURNRATEs</th>\n",
       "      <th>PELFYs</th>\n",
       "      <th>PETTMs</th>\n",
       "      <th>PEMRQs</th>\n",
       "      <th>PELFYNPAAEIs</th>\n",
       "      <th>PETTMNPAAEIs</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>symbol</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-01-04 00:00:00+08:00</th>\n",
       "      <th>SHSE.600000</th>\n",
       "      <td>0.0090</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>17.80</td>\n",
       "      <td>3.3203e+11</td>\n",
       "      <td>3.3203e+11</td>\n",
       "      <td>0.2264</td>\n",
       "      <td>7.0606</td>\n",
       "      <td>6.7228</td>\n",
       "      <td>6.7010</td>\n",
       "      <td>7.1175</td>\n",
       "      <td>6.8409</td>\n",
       "      <td>-0.1831</td>\n",
       "      <td>3.4962</td>\n",
       "      <td>3.3101</td>\n",
       "      <td>-0.6968</td>\n",
       "      <td>-0.5418</td>\n",
       "      <td>-0.5094</td>\n",
       "      <td>-0.4273</td>\n",
       "      <td>-0.4322</td>\n",
       "      <td>-0.3639</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600009</th>\n",
       "      <td>0.0173</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>28.27</td>\n",
       "      <td>3.0913e+10</td>\n",
       "      <td>5.4475e+10</td>\n",
       "      <td>0.5438</td>\n",
       "      <td>25.9958</td>\n",
       "      <td>22.3117</td>\n",
       "      <td>21.2274</td>\n",
       "      <td>25.9998</td>\n",
       "      <td>21.6989</td>\n",
       "      <td>0.4728</td>\n",
       "      <td>-0.3392</td>\n",
       "      <td>-0.1791</td>\n",
       "      <td>-0.5083</td>\n",
       "      <td>-0.3661</td>\n",
       "      <td>-0.2461</td>\n",
       "      <td>-0.3005</td>\n",
       "      <td>-0.2429</td>\n",
       "      <td>-0.2123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600010</th>\n",
       "      <td>0.0245</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>3.26</td>\n",
       "      <td>5.1319e+10</td>\n",
       "      <td>1.0615e+11</td>\n",
       "      <td>0.4411</td>\n",
       "      <td>529.8723</td>\n",
       "      <td>-89.8978</td>\n",
       "      <td>-60.0904</td>\n",
       "      <td>370.8709</td>\n",
       "      <td>-35.1244</td>\n",
       "      <td>-1.0853</td>\n",
       "      <td>-0.0793</td>\n",
       "      <td>0.4705</td>\n",
       "      <td>-0.5693</td>\n",
       "      <td>4.0327</td>\n",
       "      <td>-2.1413</td>\n",
       "      <td>-1.0105</td>\n",
       "      <td>3.2136</td>\n",
       "      <td>-0.7920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600011</th>\n",
       "      <td>-0.0024</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>8.24</td>\n",
       "      <td>8.6520e+10</td>\n",
       "      <td>8.6520e+10</td>\n",
       "      <td>0.1380</td>\n",
       "      <td>11.8769</td>\n",
       "      <td>9.0861</td>\n",
       "      <td>7.0979</td>\n",
       "      <td>11.8454</td>\n",
       "      <td>7.3287</td>\n",
       "      <td>-0.7821</td>\n",
       "      <td>0.3691</td>\n",
       "      <td>0.2238</td>\n",
       "      <td>-0.7493</td>\n",
       "      <td>-0.4971</td>\n",
       "      <td>-0.4695</td>\n",
       "      <td>-0.4239</td>\n",
       "      <td>-0.3848</td>\n",
       "      <td>-0.3589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHSE.600015</th>\n",
       "      <td>0.0052</td>\n",
       "      <td>2016-01-04 00:00:00+08:00</td>\n",
       "      <td>11.43</td>\n",
       "      <td>8.8985e+10</td>\n",
       "      <td>1.2214e+11</td>\n",
       "      <td>0.5152</td>\n",
       "      <td>6.7925</td>\n",
       "      <td>6.5258</td>\n",
       "      <td>6.5844</td>\n",
       "      <td>6.8187</td>\n",
       "      <td>6.6010</td>\n",
       "      <td>-0.5822</td>\n",
       "      <td>0.4005</td>\n",
       "      <td>0.6715</td>\n",
       "      <td>-0.5253</td>\n",
       "      <td>-0.5443</td>\n",
       "      <td>-0.5127</td>\n",
       "      <td>-0.4284</td>\n",
       "      <td>-0.4352</td>\n",
       "      <td>-0.3663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2016-05-31 00:00:00+08:00</th>\n",
       "      <th>SZSE.300347</th>\n",
       "      <td>-0.0043</td>\n",
       "      <td>2016-05-31 00:00:00+08:00</td>\n",
       "      <td>29.93</td>\n",
       "      <td>8.8221e+09</td>\n",
       "      <td>1.4089e+10</td>\n",
       "      <td>1.4475</td>\n",
       "      <td>90.1553</td>\n",
       "      <td>87.7247</td>\n",
       "      <td>87.5989</td>\n",
       "      <td>92.8805</td>\n",
       "      <td>96.7649</td>\n",
       "      <td>0.5769</td>\n",
       "      <td>-0.6206</td>\n",
       "      <td>-0.6868</td>\n",
       "      <td>0.0284</td>\n",
       "      <td>0.2295</td>\n",
       "      <td>0.8588</td>\n",
       "      <td>0.2790</td>\n",
       "      <td>0.4274</td>\n",
       "      <td>0.5535</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300408</th>\n",
       "      <td>-0.0176</td>\n",
       "      <td>2016-05-31 00:00:00+08:00</td>\n",
       "      <td>17.65</td>\n",
       "      <td>1.7158e+10</td>\n",
       "      <td>3.0493e+10</td>\n",
       "      <td>1.8085</td>\n",
       "      <td>34.9031</td>\n",
       "      <td>32.6501</td>\n",
       "      <td>33.9000</td>\n",
       "      <td>38.2361</td>\n",
       "      <td>37.9030</td>\n",
       "      <td>-0.1925</td>\n",
       "      <td>-0.5144</td>\n",
       "      <td>-0.4806</td>\n",
       "      <td>0.2428</td>\n",
       "      <td>-0.2834</td>\n",
       "      <td>-0.0715</td>\n",
       "      <td>-0.1899</td>\n",
       "      <td>-0.1203</td>\n",
       "      <td>-0.0470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300413</th>\n",
       "      <td>0.0038</td>\n",
       "      <td>2016-05-31 00:00:00+08:00</td>\n",
       "      <td>26.38</td>\n",
       "      <td>5.2411e+09</td>\n",
       "      <td>1.0578e+10</td>\n",
       "      <td>13.4511</td>\n",
       "      <td>111.2391</td>\n",
       "      <td>125.7525</td>\n",
       "      <td>209.9004</td>\n",
       "      <td>123.7053</td>\n",
       "      <td>235.9985</td>\n",
       "      <td>0.3544</td>\n",
       "      <td>-0.6662</td>\n",
       "      <td>-0.7309</td>\n",
       "      <td>3.5729</td>\n",
       "      <td>0.4253</td>\n",
       "      <td>1.5010</td>\n",
       "      <td>1.3469</td>\n",
       "      <td>0.7363</td>\n",
       "      <td>1.9739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300433</th>\n",
       "      <td>0.0999</td>\n",
       "      <td>2016-05-31 00:00:00+08:00</td>\n",
       "      <td>84.77</td>\n",
       "      <td>5.8089e+09</td>\n",
       "      <td>6.1645e+10</td>\n",
       "      <td>8.5575</td>\n",
       "      <td>39.9576</td>\n",
       "      <td>47.3421</td>\n",
       "      <td>93.3829</td>\n",
       "      <td>56.2521</td>\n",
       "      <td>-207.5025</td>\n",
       "      <td>2.9777</td>\n",
       "      <td>-0.6590</td>\n",
       "      <td>-0.0890</td>\n",
       "      <td>3.5729</td>\n",
       "      <td>-0.2365</td>\n",
       "      <td>0.1767</td>\n",
       "      <td>0.3295</td>\n",
       "      <td>0.0603</td>\n",
       "      <td>-2.4018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SZSE.300498</th>\n",
       "      <td>-0.0055</td>\n",
       "      <td>2016-05-31 00:00:00+08:00</td>\n",
       "      <td>45.98</td>\n",
       "      <td>1.1860e+10</td>\n",
       "      <td>1.6669e+11</td>\n",
       "      <td>2.7765</td>\n",
       "      <td>26.8621</td>\n",
       "      <td>19.1115</td>\n",
       "      <td>13.4760</td>\n",
       "      <td>27.2262</td>\n",
       "      <td>13.4638</td>\n",
       "      <td>1.5824</td>\n",
       "      <td>-0.5819</td>\n",
       "      <td>1.2316</td>\n",
       "      <td>0.8177</td>\n",
       "      <td>-0.3580</td>\n",
       "      <td>-0.3001</td>\n",
       "      <td>-0.3682</td>\n",
       "      <td>-0.2306</td>\n",
       "      <td>-0.2963</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20995 rows × 20 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                            0                  pub_date  \\\n",
       "                          symbol                                          \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000  0.0090 2016-01-04 00:00:00+08:00   \n",
       "                          SHSE.600009  0.0173 2016-01-04 00:00:00+08:00   \n",
       "                          SHSE.600010  0.0245 2016-01-04 00:00:00+08:00   \n",
       "                          SHSE.600011 -0.0024 2016-01-04 00:00:00+08:00   \n",
       "                          SHSE.600015  0.0052 2016-01-04 00:00:00+08:00   \n",
       "...                                       ...                       ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347 -0.0043 2016-05-31 00:00:00+08:00   \n",
       "                          SZSE.300408 -0.0176 2016-05-31 00:00:00+08:00   \n",
       "                          SZSE.300413  0.0038 2016-05-31 00:00:00+08:00   \n",
       "                          SZSE.300433  0.0999 2016-05-31 00:00:00+08:00   \n",
       "                          SZSE.300498 -0.0055 2016-05-31 00:00:00+08:00   \n",
       "\n",
       "                                       TCLOSE  NEGOTIABLEMV   TOTMKTCAP  \\\n",
       "                          symbol                                          \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000   17.80    3.3203e+11  3.3203e+11   \n",
       "                          SHSE.600009   28.27    3.0913e+10  5.4475e+10   \n",
       "                          SHSE.600010    3.26    5.1319e+10  1.0615e+11   \n",
       "                          SHSE.600011    8.24    8.6520e+10  8.6520e+10   \n",
       "                          SHSE.600015   11.43    8.8985e+10  1.2214e+11   \n",
       "...                                       ...           ...         ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347   29.93    8.8221e+09  1.4089e+10   \n",
       "                          SZSE.300408   17.65    1.7158e+10  3.0493e+10   \n",
       "                          SZSE.300413   26.38    5.2411e+09  1.0578e+10   \n",
       "                          SZSE.300433   84.77    5.8089e+09  6.1645e+10   \n",
       "                          SZSE.300498   45.98    1.1860e+10  1.6669e+11   \n",
       "\n",
       "                                       TURNRATE     PELFY     PETTM     PEMRQ  \\\n",
       "                          symbol                                                \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000    0.2264    7.0606    6.7228    6.7010   \n",
       "                          SHSE.600009    0.5438   25.9958   22.3117   21.2274   \n",
       "                          SHSE.600010    0.4411  529.8723  -89.8978  -60.0904   \n",
       "                          SHSE.600011    0.1380   11.8769    9.0861    7.0979   \n",
       "                          SHSE.600015    0.5152    6.7925    6.5258    6.5844   \n",
       "...                                         ...       ...       ...       ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347    1.4475   90.1553   87.7247   87.5989   \n",
       "                          SZSE.300408    1.8085   34.9031   32.6501   33.9000   \n",
       "                          SZSE.300413   13.4511  111.2391  125.7525  209.9004   \n",
       "                          SZSE.300433    8.5575   39.9576   47.3421   93.3829   \n",
       "                          SZSE.300498    2.7765   26.8621   19.1115   13.4760   \n",
       "\n",
       "                                       PELFYNPAAEI  PETTMNPAAEI  TCLOSEs  \\\n",
       "                          symbol                                           \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000       7.1175       6.8409  -0.1831   \n",
       "                          SHSE.600009      25.9998      21.6989   0.4728   \n",
       "                          SHSE.600010     370.8709     -35.1244  -1.0853   \n",
       "                          SHSE.600011      11.8454       7.3287  -0.7821   \n",
       "                          SHSE.600015       6.8187       6.6010  -0.5822   \n",
       "...                                            ...          ...      ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347      92.8805      96.7649   0.5769   \n",
       "                          SZSE.300408      38.2361      37.9030  -0.1925   \n",
       "                          SZSE.300413     123.7053     235.9985   0.3544   \n",
       "                          SZSE.300433      56.2521    -207.5025   2.9777   \n",
       "                          SZSE.300498      27.2262      13.4638   1.5824   \n",
       "\n",
       "                                       NEGOTIABLEMVs  TOTMKTCAPs  TURNRATEs  \\\n",
       "                          symbol                                              \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000         3.4962      3.3101    -0.6968   \n",
       "                          SHSE.600009        -0.3392     -0.1791    -0.5083   \n",
       "                          SHSE.600010        -0.0793      0.4705    -0.5693   \n",
       "                          SHSE.600011         0.3691      0.2238    -0.7493   \n",
       "                          SHSE.600015         0.4005      0.6715    -0.5253   \n",
       "...                                              ...         ...        ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347        -0.6206     -0.6868     0.0284   \n",
       "                          SZSE.300408        -0.5144     -0.4806     0.2428   \n",
       "                          SZSE.300413        -0.6662     -0.7309     3.5729   \n",
       "                          SZSE.300433        -0.6590     -0.0890     3.5729   \n",
       "                          SZSE.300498        -0.5819      1.2316     0.8177   \n",
       "\n",
       "                                       PELFYs  PETTMs  PEMRQs  PELFYNPAAEIs  \\\n",
       "                          symbol                                              \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000 -0.5418 -0.5094 -0.4273       -0.4322   \n",
       "                          SHSE.600009 -0.3661 -0.2461 -0.3005       -0.2429   \n",
       "                          SHSE.600010  4.0327 -2.1413 -1.0105        3.2136   \n",
       "                          SHSE.600011 -0.4971 -0.4695 -0.4239       -0.3848   \n",
       "                          SHSE.600015 -0.5443 -0.5127 -0.4284       -0.4352   \n",
       "...                                       ...     ...     ...           ...   \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347  0.2295  0.8588  0.2790        0.4274   \n",
       "                          SZSE.300408 -0.2834 -0.0715 -0.1899       -0.1203   \n",
       "                          SZSE.300413  0.4253  1.5010  1.3469        0.7363   \n",
       "                          SZSE.300433 -0.2365  0.1767  0.3295        0.0603   \n",
       "                          SZSE.300498 -0.3580 -0.3001 -0.3682       -0.2306   \n",
       "\n",
       "                                       PETTMNPAAEIs  \n",
       "                          symbol                     \n",
       "2016-01-04 00:00:00+08:00 SHSE.600000       -0.3639  \n",
       "                          SHSE.600009       -0.2123  \n",
       "                          SHSE.600010       -0.7920  \n",
       "                          SHSE.600011       -0.3589  \n",
       "                          SHSE.600015       -0.3663  \n",
       "...                                             ...  \n",
       "2016-05-31 00:00:00+08:00 SZSE.300347        0.5535  \n",
       "                          SZSE.300408       -0.0470  \n",
       "                          SZSE.300413        1.9739  \n",
       "                          SZSE.300433       -2.4018  \n",
       "                          SZSE.300498       -0.2963  \n",
       "\n",
       "[20995 rows x 20 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_y_1=pd.concat([h_m,ex3],axis=1).dropna()\n",
    "f_y_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([              0,      'pub_date',        'TCLOSE',  'NEGOTIABLEMV',\n",
       "           'TOTMKTCAP',      'TURNRATE',         'PELFY',         'PETTM',\n",
       "               'PEMRQ',   'PELFYNPAAEI',   'PETTMNPAAEI',       'TCLOSEs',\n",
       "       'NEGOTIABLEMVs',    'TOTMKTCAPs',     'TURNRATEs',        'PELFYs',\n",
       "              'PETTMs',        'PEMRQs',  'PELFYNPAAEIs',  'PETTMNPAAEIs'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_y_1.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                           symbol     \n",
       "2016-01-04 00:00:00+08:00  SHSE.600000    0.0090\n",
       "                           SHSE.600009    0.0173\n",
       "                           SHSE.600010    0.0245\n",
       "                           SHSE.600011   -0.0024\n",
       "                           SHSE.600015    0.0052\n",
       "                                           ...  \n",
       "2016-05-31 00:00:00+08:00  SZSE.300347   -0.0043\n",
       "                           SZSE.300408   -0.0176\n",
       "                           SZSE.300413    0.0038\n",
       "                           SZSE.300433    0.0999\n",
       "                           SZSE.300498   -0.0055\n",
       "Name: 0, Length: 20995, dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_y_1.iloc[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SpearmanrResult(correlation=-0.00251890169052677, pvalue=0.7151420682022427)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spearmanr(f_y_1.iloc[:,0],f_y_1[\"PELFY_s\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TCLOSEs SpearmanrResult(correlation=0.0024304070380963302, pvalue=0.7247354747216616)\n",
      "NEGOTIABLEMVs SpearmanrResult(correlation=-0.030925994390608693, pvalue=7.399044672333684e-06)\n",
      "TOTMKTCAPs SpearmanrResult(correlation=-0.03365402703222736, pvalue=1.0747022097519771e-06)\n",
      "TURNRATEs SpearmanrResult(correlation=-0.03952031836447587, pvalue=1.0147006651214881e-08)\n",
      "PELFYs SpearmanrResult(correlation=-0.002518884387190176, pvalue=0.715143939665623)\n",
      "PETTMs SpearmanrResult(correlation=-0.0035982048599351017, pvalue=0.6021313412906157)\n",
      "PEMRQs SpearmanrResult(correlation=-0.00016186368529837246, pvalue=0.9812896565060665)\n",
      "PELFYNPAAEIs SpearmanrResult(correlation=0.0013786251791810065, pvalue=0.8416790911062658)\n",
      "PETTMNPAAEIs SpearmanrResult(correlation=-0.0008896404229984172, pvalue=0.8974382427465999)\n"
     ]
    }
   ],
   "source": [
    "for i in f_y_1.columns[11:]:\n",
    "    print(i,spearmanr(f_y_1.iloc[:,0],f_y_1[i]))\n",
    "#pvalue <0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TCLOSE_s SpearmanrResult(correlation=0.0024304166954637993, pvalue=0.7247344254055343)\n",
      "NEGOTIABLEMV_s SpearmanrResult(correlation=-0.030925985754399386, pvalue=7.399088096295342e-06)\n",
      "TOTMKTCAP_s SpearmanrResult(correlation=-0.03365401602689061, pvalue=1.0747109020400367e-06)\n",
      "TURNRATE_s SpearmanrResult(correlation=-0.03952035069213699, pvalue=1.0146726222505042e-08)\n",
      "PELFY_s SpearmanrResult(correlation=-0.00251890169052677, pvalue=0.7151420682022427)\n",
      "PETTM_s SpearmanrResult(correlation=-0.0035982210286692345, pvalue=0.6021297096182836)\n",
      "PEMRQ_s SpearmanrResult(correlation=-0.00016186225178023872, pvalue=0.9812898221806594)\n",
      "PELFYNPAAEI_s SpearmanrResult(correlation=0.0013786326988221758, pvalue=0.8416782389760336)\n",
      "PETTMNPAAEI_s SpearmanrResult(correlation=-0.0008896371306300021, pvalue=0.8974386202083917)\n"
     ]
    }
   ],
   "source": [
    "for i in f_y_1.columns[11:]:\n",
    "    print(i,spearmanr(f_y_1.iloc[:,0],f_y_1[i]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多因子选股策略\n",
    "\n",
    "* 基于因子排序的序号，进行加权求和，看总分数的排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
